zoukankan      html  css  js  c++  java
  • hadoop学习笔记之一步一步部署hadoop分布式集群

    一、准备工作

    • 同一个局域网中的三台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,在文件末尾添加信息,然后退出保存:

           

    • 执行source /etc/profile,使修改的文件生效
    • 然后执行java -version,如果能显示如下版本信息,则安装成功:

          

    注意:有可能执行该命令时会报错,那是因为在64位系统上运行了32位的jdk, 这时候只需执行安装命令:yum install glibc.i686 -y即可 glibc.i686是一个32位运行库。

    每台虚拟机都要装!

    四、ssh无密码连接

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

           

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

          

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

          

    • 然后在每一个节点上(虚拟机)执行上述所有步骤,这样就有了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(具体移至什么地方可以自随意,就是自己别忘了就好)

          

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

         

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

          

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

          

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

          

    • 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目录到指定位置(可以自定义,但是最好统一一个自己好记住的位置):

         

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

         

    • 检查是否启动成功,如果名称节点namenode(node1)有如下所示:

         

         并且数据节点(node2,node3)有如下所示:

    ,则启动成功!

    六、集群测试

    • 在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/,作如下操作:

         

    • 查看是否上传成功:

         

      上传成功,表示文件系统可以正常工作!

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

         

    • 执行完毕后查看结果:

         

      可以看出统计单词数与我们上传的文件时一致的,说明map-reduce可以正常工作!

    • 至此,我们可以自信我们的hadoop已经完全部署好了!

    七、总结

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

    2014-08-15

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/90zeng/p/hadoop_setup.html
Copyright © 2011-2022 走看看