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

[经验分享] Hadoop安装部署过程

[复制链接]

尚未签到

发表于 2016-12-5 07:36:53 | 显示全部楼层 |阅读模式
  

  安装HADOOP先决条件

  SHH安装,并且有公用ssh无密码跳转账号:admin(机器默认会安装SSH)
  在namenode和各个slave上用机器名互相ping,ping不通的话,无法进行
  JAVA环境安装(JDK1.6即可兼容HADOOP0.20.2版本)
  安装路径:/home/admin/deploy/java6
  安装HADOOP

  安装HADOOP版本为0.20.2
  安装路径:/home/admin/deploy/hadoop-0.20.2
  首先格式化hdfs:执行hadoop namenode -format命令,如果不执行此命令在每次重启hadoop会进入安全模式
核心配置文件
  hadoop-env.sh:该文件用来配置hadoop所需的特殊环境变量:

  JAVA与HADOOP环境变量的设置(如果在~/.bash_profile中设置了环境变量,这里可以不进行配置)
  export JAVA_HOME=/home/admin/deploy/java6
  export HADOOP_HOME=/home/admin/deploy/hadoop-0.20.2
  JAVA虚拟机性能调优(省略不用修改的内容)
  HADOOP_NAMENODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m
  HADOOP_DATANODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m
  HADOOP_JOBTRACKER_OPTS="-Xmx2048m–Xms1024m -Xmn1024m
  补充解释:
  这里的XMS与XMX指的是JAVA虚拟机内存分配策略中的最大可用内存和最小内存设置。
  不建议将XMS与XMX设置成一样。因为java的垃圾回收器在内存使用达到XMS值的时候才会开始回收,如果2个值一样,那么JAVA会在使用完所有内存时才会回收垃圾,导致内存LOAD一直很高。
  关于XMN这个参数是JAVA内存机制中的年轻代。
  整个JVM内存大小=年轻代大小+ 年老代大小 +持久代大小
  持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。这里为了便于计算,取整个堆的一半。
  另外:如果JAVA内存设置过大,HADOOP启动会报错
  Error occurred during initialization of VM,Could not reserve enough space for object heap
core-site.xml:核心代码配置文件,需要修改的参数如下,其余可以先采用默认配置

  <property>
  <name>fs.default.name</name>
  <value>hdfs://xxxxxxxxxx:9000</value>
  </property>
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/home/admin/deploy/hdfs</value>
  </property>
  内容说明:
  hadoop.tmp.dir:
  这是hdfs存放namenode名空间和datanode数据块的地方,可以设置为任意存在的目录,默认在/tmp/Hadoop-username目录下,建议重定向目录
  如果遇到namenode启动失败,很可能是这个配置文件的问题。
  如果遇到datanode启动失败,一般是没有成功格式化hdfs,实在无法解决的话,可以尝试将{Hadoop.tmp.dir}清空,重新格式化hdfs。
  fs.default.name
  顾名思义,这个配置是HDFS的NAMENODE的地址与端口号
hdfs-site.xml:节点的hdfs配置文件,需要修改的参数如下:

  <property>
   <name>dfs.replication</name>
  <value>1</value>
  </property>
  内容说明:
  dfs.replication:
  HDFS的文件块备份。测试环境一般不用备份块,设置为1。
mapred-site.xmlmapreduce配置文件,重要参数如下:

  <property>
  <name>io.sort.mb</name>
  <value>200</value>
  <description>The total amount of buffer memory to use whilesorting
   files, inmegabytes. By default, gives each mergestream 1MB, which
   shouldminimize seeks.</description>
  </property>
  在map排序时buffer的内存大小,如果过小,map会将一部分结果写到磁盘上。
  以MB为单位,默认100M
  这个选项定义了map输出结果在内存占用buffer的大小,当buffer达到一定阈值,会启动一个后台线程来对buffer的内容进行排序,然后写入本地磁盘(一个spill文件)
  根据map输出数据量的大小,可以适当的调整buffer的大小,但不是越大越好。
  假设内存无限大,io.sort.mb=1024(1G), 和io.sort.mb=300 (300M),前者未必比后者快,因为1G的数据排序一次和排序3次,每次300MB。(分治算法)
  扩展:分治算法:
  分治法解题的一般步骤:
    (1)分解,将要解决的问题划分成若干规模较小的同类问题;
    (2)求解,当子问题划分得足够小时,用较简单的方法解决;
  (3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。
  <property>
  <name>mapred.job.tracker</name>
  <value> xxxxxxxxxx:9001</value>
  </property>
  jobtracker的地址,指定端口号
  <property>
  <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>5</value>
  </property>
  <property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>5</value>
  </property>
  每个tasktracker上最大map和reduce的数量,如果已经跑满,JobTracker(JT)就不会再分配task到这台TT上。
  <property>
  <name>mapred.system.dir</name>
  <value>/mapred/system</value>
  <description>The shared directory where MapReduce stores controlfiles.
  </description>
  </property>
  <property>
  <name>mapred.temp.dir</name>
  <value>/mapred/temp</value>
  <description>A shared directory for temporary files.
  </description>
  </property>
  MAP与reduce处理过程中产生的临时文件,2个文件路径需要完全独立,且不能与data存放的路径重合。
启动与停止
启动脚本:start-all.sh(返回内容如下):

  starting namenode, logging to /home/hadoop/hadoop-0.20.2-cdh3u1/logs/hadoop-admin-namenode-xxxxxxxxxx.out
  xxxxxxxxxx: starting datanode, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-datanode-xxxxxxxxxx.out
  xxxxxxxxxx: starting secondarynamenode, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-secondarynamenode- xxxxxxxxxx.out
  starting jobtracker, logging to /home/hadoop/hadoop-0.20.2-cdh3u1/logs/hadoop-admin-jobtracker-xxxxxxxxxx.out
  xxxxxxxxxx: starting tasktracker, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-tasktracker-xxxxxxxxxx.out
停止脚本:stop-all.sh(返回内容如下):

  stopping jobtracker
  xxxxxxxxxx: stopping tasktracker
  stopping namenode
  xxxxxxxxxx: stopping datanode
  xxxxxxxxxx: stopping secondarynamenode
一些潜规则(权限切换)
admin账号下使用hadoop,需要更改hadoop上的目录的权限,此时需要在hadoop账号下执行以下两条命令:

hadoopfs -chown -R admin:admin /
hadoop fs -chown -R hadoop:hadoop /user/hadoop/mapred/system

运维网声明 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.iyunv.com/thread-309657-1-1.html 上篇帖子: Hadoop超级安装手册(转载) 下篇帖子: Hadoop集群环境安装步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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