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

[经验分享] hadoop学习笔记之一步一步部署hadoop分布式集群

[复制链接]

尚未签到

发表于 2015-7-11 08:30:05 | 显示全部楼层 |阅读模式
  一、准备工作


  • 同一个局域网中的三台linux虚拟机,我用的是redhat6.4,如果主机是windows操作系统,可以先安装vmware workstation, 然后在workstation中装上3台虚拟机,这样就形成了一个以物理机为DNS服务器的局域网,物理机和虚拟机都有一个局域网IP,互相之间可以通信。
  • 因为hadoop是一个java开发者写的开源软件,所以你懂得,肯定用的是java语言编写的,所以要装jdk,当然还有一些perl语言写的东西,所以也要装perl,因为是个集群,所以互相之间要连接通信,需要安装ssh
  • 如果用的是redhat,还需要关闭火墙,因为火墙会导致虚拟机之间无法连接,即关闭iptables,ip6tables,selinux,并设置开机不自启动
  • 本次试验搭建的环境为:
          node1:192.168.141.130 matser/namenode
       node2:192.168.141.131 slave/datanode
      node3:192.168.141.132 slave/datanode
  二、配置hosts
  首先在所有节点上(node1,node2,node3)上面编辑:vi /etc/hosts,添加如下内容:
  192.168.141.130   node1
  192.168.141.131   node2
  192.168.141.132   node3
  这样,在设置相应的IP时就可以用其解析名称代替,如需要写192.168.141.130:9000时,就可以直接写node1:9000,不仅书写方便,而且可以加快解析IP的速度,使集群运行更加流畅,但是不配置该项也不会影响集群正常工作。
  三、jdk安装


  • 去jdk官网http://www.oracle.com/technetwork/cn/java/javase/downloads/index-jsp-138363-zhs.html,根据自己操作系统32还是64位下载一个jdk,我下载的是jdk-8u11-linux-i586.gz
  • 解压jdk-8u11-linux-i586.gz:


    1 tar zxf jdk-8u11-linux-i586.gz
      然后会看到出现了一个目录:jdk1.8.0_11

  • 为了书写方便,去掉版本信息,并将之移动到/usr/local/目录下:


    1 mv  jdk1.8.0_11  jdk
    2 mv jdk /usr/local/
      

  •   修改环境变量:vi /etc/profile,在文件末尾添加信息,然后退出保存:

         DSC0000.png


  • 执行source /etc/profile,使修改的文件生效
  • 然后执行java -version,如果能显示如下版本信息,则安装成功:
         DSC0001.png
  注意:有可能执行该命令时会报错,那是因为在64位系统上运行了32位的jdk, 这时候只需执行安装命令:yum install glibc.i686 -y即可 glibc.i686是一个32位运行库。
  每台虚拟机都要装!
  四、ssh无密码连接


  • 首先我们新添加一个用户专门用来管理运行hadoop,我新建了一个名为grid的用户,然后自己设定该用户密码
         DSC0002.png


  • su - grid切换到grid用户
  • ssh-keygen生成公钥和私钥,一直回车默认就是了:
         DSC0003.png


  • 执行如下命令,可以看到生成的key,然后将公钥复制成authorized_keys:
         DSC0004.png


  • 然后在每一个节点上(虚拟机)执行上述所有步骤,这样就有了3个authorized_keys文件,我们把3个authorized_keys文件的内容复制到一起,形成一个authorized_keys,并用这个总的authorized_keys替换各个节点上原来的authorized_keys文件。
  • 验证一下是否成,就是在任一节点上,用ssh连接其他任何节点,如果不出现提示让你输密码,而是直接连上,则表示成功。
  五、hadoop安装
  终于到正菜了,呼呼!


  • 去hadoop.apache.org下载一个稳定的版本即可,这里以hadoop-1.2.1.tar.gz为例
  • 解压,去掉名字中的版本信息,移至/usr/local(具体移至什么地方可以自随意,就是自己别忘了就好)
         DSC0005.png


  • cd /usr/local/hadoop/conf/ 转到hadoop配置目录下
  • vi hadoop-env.sh,添加如下信息,告诉hadoop jdk的安装路径,然后保存退出:
         DSC0006.png


  • vi core-site.xml,写入如下信息,要注意,自己要在/home/grid/hadoop/ 目录下手动建立tmp目录,如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoop-dfs。而这个目录在每次重启后都会被删掉,必须重新执行format才行,否则会出错,hdfs后面的ip号就是名称节点的ip,即namenode的ip,端口号默认9000,不用改动。
         DSC0007.png


  • vi hdfs-site.xml,设置数据备份数目,这里我们有有一个namenode,两个datanode,所以备份数目设置为2:
         DSC0008.png


  • vi mapreduce-site.xml,设置map-reduce的作业跟踪器(job tracker)所在节点,这里我们同样将其放置在node1(192.168.141.130)上,端口号9001:
         DSC0009.png
  


  • vi master,指定namenode所在节点,直接把节点名写进去:
  node1
  退出保存
  注意,倘若没有像配置过/etc/hosts,这里就要直接写IP:192.168.141.130


  • vi slave,指定datanode所在节点:
  node2
  node3
  退出保存
  同样注意,倘若没有像配置过/etc/hosts,这里就要直接写IP:
  192.168.141.131
  192.168.141.132
  


  • 配置完毕,拷贝配置好的hadoop目录到指定位置(可以自定义,但是最好统一一个自己好记住的位置):
        DSC00010.png


  • 在node1上切换到grid, cd /home/grid/hadoop/,然后执行文件系统格式化:bin/hadoop namenode -format,如果没有任何warning,error,fatal等并且最后出现,format successfully字样,则格式化成。
  • 启动hadoop:
        DSC00011.png


  • 检查是否启动成功,如果名称节点namenode(node1)有如下所示:
        DSC00012.png
       并且数据节点(node2,node3)有如下所示:
   DSC00013.png DSC00014.png ,则启动成功!
  六、集群测试


  • 在node1上的,grid用户下,cd /home/grid/,建立一个目录mkdir input,然后进入目录input:cd input/,执行如下两条命令:
    echo "hello world" > test1.txt
    echo "hello hadoop" > test2.txt


  • 将上述input目录下的文件上传到dfs文件系统,cd /home/grid/hadoop/,作如下操作:
        DSC00015.png


  • 查看是否上传成功:
        DSC00016.png
    上传成功,表示文件系统可以正常工作!


  • 检查map-reduce功能是否正常,用hadoop包里面自带的单词统计jar包统计我们刚才上传的文件中不同单词的个数,看看是否正确:
        DSC00017.png


  • 执行完毕后查看结果:
        DSC00018.png
    可以看出统计单词数与我们上传的文件时一致的,说明map-reduce可以正常工作!


  • 至此,我们可以自信我们的hadoop已经完全部署好了!
  七、总结
  对于第一次玩hadoop的读者来说,在安装的过程中,必定会出现,这样或者那样的问题,但是,我们要抱着一个解决问题的心,学习过程本就是在错误中成长,我自己在安装过程中也出现了不少问题,如datanode无法启动。或者那么namenode无法启动等等一系列问题,千万不要烦躁而放弃,自己慢慢在网上查资料还是可以解决的,最重要是细心,要学会根据系统的报错,检查配置文件是否写错,初学者都不怎么会看日志,但是要迈出这一步,硬着头皮看,当通过看日志解决了某个bug时,那种进步的愉悦感是很爽的,最后希望大家都犯点错,一次就配置成功不一定是好事,最后热烈欢迎大家给我留言,我们一起交流,学习!
  2014-08-15

运维网声明 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-85347-1-1.html 上篇帖子: Hadoop上的中文分词与词频统计实践 下篇帖子: Hadoop开发第4期---分布式安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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