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

[经验分享] 搭建hadoop集群

[复制链接]

尚未签到

发表于 2016-12-3 10:49:26 | 显示全部楼层 |阅读模式
  一、前言
      本文假设你对hadoop有理论上的了解,因此不对hadoop及其涉及的概念做基本介绍,仅记录如何搭建一个可用的hadoop集群。不过提到hadoop不得不提引导其出生的Google发表的MapReduce论文,顺便感慨下Google的强大。最近Google的风头逐渐被如日中天的Facebook盖过,再顺便感慨下互联网时代的风云变幻。

二、搭建
1、准备工作
      要搭建一个物理上的hadoop集群,首先你得有几台机器吧,配置不用高,hadoop提倡的就是在低廉的物理设备上提供可靠的高性能计算能力。机器上装好Linux系统,JDK,ssh和hadoop。我用的是Ubuntu11.04,openjdk1.6和hadoop-0.19.1。另外配置好JAVA_HOME, HADOOP_HOME等环境变量,将HADOOP_HOME/bin加入PATH中。你可以去这里,根据上面的快速入门文档,在单机上跑一跑,看是否做好了全部准备工作。另外hadoop比较依赖JDK版本,0.19.x必须1.5以上版本,0.20.x则需1.6以上版本,如果你在配置集群或者运行MapReduce程序时出现莫名其妙的问题时需要检查你的JDK版本,可以去这里看看。

2、基础配置
      首先确保你每台机器名不一样,改机器名修改这个文件/etc/hostname。通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters,可以是一台机器。余下的机器即作为DataNode也作为TaskTracker,这些机器是slaves。配置/etc/hosts文件指定master和slave的IP地址,我的配置如图所示:
DSC0000.jpg
      进入hadoop根目录下的conf目录,修改masters和slaves文件,将我们的机器名添加进masters文件,slave机器名添加进slaves文件,注意一行一个。
      修改conf目录下的hadoop-site.xml文件,下面是我在网上找到的一些配置信息,直接copy进去可用(注意里面目录信息记得根据自身机器情况进行修改):
<configuration>
<property>
   <name>fs.default.name</name>
   <value>hdfs://master:54310/</value>
</property>
<property>
   <name>mapred.job.tracker</name>
   <value>hdfs://master:54311/</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>3</value>                                     #指定 HDFS 中每个 Block 被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为3
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmp/</value>      #hadoop的tmp目录路径
</property>
<property>
  <name>dfs.name.dir</name>
  <value>/home/hadoop/name/</value>      #hadoop的name目录路径
</property>
<property>
   <name>mapred.child.java.opts</name>
   <value>-Xmx512m</value>                        #进程
</property>
<property>
  <name>dfs.block.size</name>
  <value>67108864</value>
</property>                                                    #新文件默认block大小
<property>  
  <name>dfs.permissions</name>  
  <value>false</value>                                   #效验HDFS文件系统权限
</property>  
<property>  
   <name>dfs.web.ugi</name>  
   <value>hadoop,supergroup</value>          #hadoop页面访问权限
</property>
<property>
   <name>heartbeat.recheck.interval</name>
   <value>5000</value>                                  #心跳间隔时间,5000秒=40分
</property>
</configuration>
这些都需要在每台机器里面配置,不同的是slaves中配置hadoop-site.xml文件时去掉
<property>
  <name>dfs.name.dir</name>
  <value>/home/hadoop/name/</value> 
</property>
改成:
<property>
  <name>dfs.data.dir</name>
  <value>/home/hadoop/data/</value> 
</property>
最后在hadoop根目录下建立临时文件目录tmp。

3、配置ssh
      虽然hadoop框架本身不需要ssh,但是它的守护程序(比如TaskTracker,DataNode)需要用到,所以要配置ssh,保证命令执行时不需要再输入密码,根据前人 经验,如果都是Master启动和关闭hadoop的话只需要建立单向(master到slaves)ssh连接就可以了。配置的方法网上很多,前面的链接里面都有提到,这里就不再赘述了。

4、启动hadoop集群
      启动Hadoop集群需要启动HDFS集群和Map/Reduce集群。启动之前需要格式化一个新的分布式文件系统,在master机器上运行:hadoop namenode –dfs。输入命令:start-dfs.sh启动HDFS,输入:start-mapred.sh启动MapReduce。也可以输入start-all.sh启动所有。

5、验证
      输入命令:netstat –tnl可以看到hadoop的一些端口都已经开放了。在浏览器输入
  http://master:50030
DSC0001.jpg
http://master:50070
DSC0002.jpg
均可正常访问。在集群正常运行时可以访问这两个地址查看集群运行状况。

6、加入hadoop集群
      如果一个hadoop集群已经在运行中,你又有了一些slave机器或者是宕掉的机器想加入这个集群,前者需要在master机器的HADOOP_HOME/conf/slaves文件中添加自己的机器名,再执行:
      hadoop-daemon.sh start datanode
      hadoop-daemon.sh start tasktracker
即可不用停掉集群动态添加进去。

7、停止hadoop集群
      stop-dfs.sh停用HDFS, stop-mapred.sh停用MapReduce。或者输入stop-all.sh。

三、总结
      集群的搭建工作并不是一件太难的事情,关键在于深入了解hadoop的内部运行机制,根据不同的情况对集群做一些优化配置,特殊的情况需要对hadoop源码进行一些改进。集群的配置还需要根据长期的生产运行跟进监控,不断的改进使它更适合我们的生产环境,没有最好的配置,只有最适合我们的配置。

运维网声明 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-309060-1-1.html 上篇帖子: hadoop问题总结 下篇帖子: Cygwin使用hadoop
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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