hadoop2.6.0完全分布式部署

这里是hadoop最小的配置,也就是修改最少量的东西让hadoop跑起来。

系统是 Centos6.7 64位, hadoop是2.6.0,虚拟机是VMWare WorkStation

假设虚拟机启动了4台机子:192.168.0.80 、192.168.0.155、192.168.0.157、192.168.0.146。这四台都做slave, 同时80还兼任master。我把root用户最为hadoop的使用者,没有新建别的用户

(设置虚拟机时还有个坑:每个虚拟机的网络连接必须选择桥接模式,并且一定要勾选复制物理网络连接状态,当然用虚拟可能还有其他问题,比如设置静态IP什么的,见)

1.在hadoop1机子上配置/etc/hosts。下面是我的配置。 注意要严格按照 IP 主机名 别名 的格式配置,切记切记。否则后面会发生很蛋疼的结果。 hadoop1做master, hadoop1/2/3/4做slaves

2.使hadoop1能够通过ssh登录所有的机子(包括他自己),在hadoop1上运行命令

  ssh-keygen -t dsa -f ~/.ssh/id_dsa    //这里使用的DSA加密,当然也可以用RSA

  分别运行四条命令 

      ssh-copy-id -i ~/.ssh/id_dsa.pub root@hadoop1     //要输入root用户在hadoop1机子上的密码

  ssh-copy-id -i ~/.ssh/id_dsa.pub root@hadoop2     //要输入root用户在hadoop2机子上的密码

  ssh-copy-id -i ~/.ssh/id_dsa.pub root@hadoop3     //要输入root用户在hadoop3机子上的密码

  ssh-copy-id -i ~/.ssh/id_dsa.pub root@hadoop4     //要输入root用户在hadoop4机子上的密码

3.修改hadoop配置文件中的yarn-env.sh 和hadoop-env.sh,在两个sh文件中把 JAVA_HOME配置上

3.修改core-site.xml,改为

  

<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
       </property>
</configuration>

4.修改hdfs-site.xml,改为

<configuration>
     <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>hadoop1:9001</value>
     </property>
<!--可以不配置下面的两个 dfs.namenode.name.dir 和 dfs.datanode.data.dir,不过如果配置了,那么得在master上建立这两个文件夹-->
<property> <name>dfs.namenode.name.dir</name> <value>file:/opt/modules/hadoopData/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/modules/hadoopData/data</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>

4.把配置文件中的mapred-site.xml.template名称改为mapred-site.xml,同时把里面内容改为

<configuration>
  <property>  
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

5.修改yarn-site.xml,改为

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
 <!--一定一定要有下面这个配置,他是告诉每个slave resourcemanager的位置-->
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> </configuration>

6.修改slaves文件,每行一个,分别添加hadoop1,hadoop2,hadoop3,hadoop4

7.通过scp命令把/etc/hosts和hadoop以及jdk都复制到每个slave上

  scp /etc/hosts root@hadoop2:/etc/             //相同的文件会自动覆盖

     我把hadoop和jdk都放在同一个文件夹下 ,如 /opt/modules 下面,那么只要命令

  scp -r /opt/modules root@hadoop2:/op/ 就可以了

8.格式化hdfs并启动hadoop

  命令 hadoop namenode -format

  在master上面,hadoop安装目录下的sbin目录,运行 start-dfs.sh 和 start-yarn.sh 就可以了

9.运行例子

  进入hadoop目录下的bin目录, 运行  ./hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /input /ouput 'dfs[a-z.]+' 看看

附 :1. namenode WEB UI 的默认端口是 50070;resourcemanager WEB UI的默认端口是8088。 可以通过这两个端口用浏览器查看hadoop的状态(namenode resourcemanager 都是在master上的)

   2.可以把hadoop下的bin和sbin都加入系统的PATH

原文地址:https://www.cnblogs.com/formyjava/p/5169256.html