设为首页 收藏本站
查看: 1637|回复: 0

[经验分享] hadoop使用笔记

[复制链接]

尚未签到

发表于 2018-11-1 08:57:32 | 显示全部楼层 |阅读模式
  最近用了一下hadoop,把一些咚咚记一下,免得以后忘了:
  1. $HADOOP_HOME/bin/hadoop命令是个shell脚本
     如果想查看HDFS的文件内容,我们会运行$HADOOP_HOME/bin/hadoop fs -ls /,起初还以为$HADOOP_HOME/bin/hadoop是个二进制,还在迷惑这个二进制如何run一个java程序,后来发现,$HADOOP_HOME/bin/hadoop是个shell脚本,最终这个脚本执行了:
     exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
     其中JAVA=$JAVA_HOME/bin/java
     JAVA_HEAP_MAX=-Xmx1000m,设置了jvm最大内存的使用量,这个参数影响的是hadoop客户端
     $HADOOP_OPTS用一堆 -Dproperty=value 设置了一些属性的值
     "$CLASSPATH"就是一对class的path
     $CLASS是main函数所在的类名字,比如:
         fs时,CLASS=org.apache.hadoop.fs.FsShell,
         jar时,CLASS=org.apache.hadoop.mapred.JobShell
     "$@"是传递给main函数的参数,"$1"已经被shift过了,"$@"是从"$2"开始的
  2. HADOOP_CLASSPATH

     在run一个hadoop任务的前,通常要设置一下环境变量HADOOP_CLASSPATH,这个环境变量在运行$HADOOP_HOME/bin/hadoop时,会被添加到>  3. JobConf.set("tmpjars",*.jar)和JobConf.setjar(ajar.jar)
     前者设置多个jar包,这些jar包会被上传到各计算节点,被计算节点所用,比如自定义的mapper和reducer所在的jar包就需要添加到"tmpjars";而后者只能设置一个jar包文件。再次,istributedCache.addArchiveToClassPath()也可将jar包上传到所有的nodes,并加入classpath。
  4. "$bin"/hadoop-config.sh和${HADOOP_CONF_DIR}/hadoop-env.sh
     $HADOOP_HOME/bin/hadoop执行时会调用这两个脚本,因此用户可以在${HADOOP_CONF_DIR}/hadoop-env.sh中初始化环境变量
  5. DistributedCache
     DistributedCache.addCacheFile()将HDFS上的文件在每个计算节点存一份,存储路径为mapred.local.dir。如果某个节点要读取这个文件,则可以直接从本地文件系统读取,java.io.FileInputStream。 getLocalCacheFiles()会列出本地被cache的文件列表,如果在调试任务时,jobtracker被设置为local,则getLocalCacheFiles()会返回空,需要注意。
  6. 集群配置:
     namenode&jobtracker:谁运行bin/start-all.sh,谁就是namenode&jobtracker
     SecondaryNameNode:在conf/masters中配置
     TaskTracker and DataNode:在conf/slaves中配置
  7. 关于硬件
     内存:java程序每个core大约消耗1-2G的内存,如果是stream使用python等大内存占用量的语言写的,则内存需要调整的更大
     cpu:cpu在hadoop中并不是很重要的瓶颈
     硬盘:硬盘的读写速度是非常重要的因素。因为hadoop中大多数中间数据都是序列化到硬盘的,这样的设计也是为了处理大规模数据考虑的,总之hadoop框架会尽量减少内存的使用,将内存留给mapper和reducer中用户的处理程序,硬盘非常重要。
     网络带宽:各node需要共享数据,因此网络带宽也是非常重要的,对于小规模的集群,机器位置不要过于零散


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629182-1-1.html 上篇帖子: lzo的安装及在hadoop中的配置 下篇帖子: 实例讲解hadoop中的hive查询(python语言实现)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表