Ubuntu14.04全分布式安装hadoop2.7.2(四)全分布式安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ycisacat/article/details/53325520

前文回顾:

三台电脑,一台做主机,两台做从机。主机名分别是
master,slave1,slave2,ip分别是192.168.235.1~3
系统:ubuntu14.04
jdk:1.8.0_91
Hadoop: 2.7.2 (stable)
用户名:hadoop

从零开始的安装步骤:
1 创建Hadoop用户组
2 下载jdk,hadoop,ssh,eclipse等等,
3 实现几台机之间的ssh无密码登陆
4 配置环境(jdk,hadoop单机)
5 改host和hostname文件
6 在主机上修改和配置
7 把修改好的hadoop文件夹整个复制到从机上
8 主机上格式化namenode,并开始运行整个工程
9 jps查看运行状态
10 主机上关闭整个工程


本篇主要讲以上5-10步骤,虽然上面把它写成了5个点,但下面为了写清晰点分了8点(希望别晕)

1 改hostname文件

$sudo vim /etc/hostname

这个文件主要是确定这台机的名字,主机改为master,从机改为slave1, slave2,如果之前已经取好名字可以不用改(只要之后对应得上名字就行,并不一定要叫master,slave之类的)

保存关闭

2 改host文件

$sudo vim /etc/hosts

在文件中添加
127.0.0.1 localhost(一般已有这句,在下面加)
192.168.235.1 master
192.168.235.2 slave1
192.168.235.3 slave2

保存并关闭

3 在hadoop中创建几个文件夹

$ cd /usr/local/hadoop
/usr/local/hadoop$ mkdir tmp
/usr/local/hadoop$ mkdir tmp/dfs
/usr/local/hadoop$ mkdir tmp/dfs/data
/usr/local/hadoop$ mkdir tmp/dfs/name
/usr/local/hadoop$ sudo chown hadoop:hadoop tmp

3 在主机上修改hadoop的配置文件
主要涉及的文件有:
/usr/local/hadoop/etc/hadoop中的:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
slaves

$cd /usr/local/hadoop/etc/hadoop
#修改其他文件时,把以下hadoop-env.sh替换成其他文件的名字
/usr/local/hadoop/etc/hadoop$ sudo vim hadoop-env.sh

各文件都已存在或存在xxx.xml.template(对应的模板),直接修改或复制模板新保存一个xml文件即可

以下为各文件中的修改内容:
(1)hadoop-env.sh
找到JAVA_HOME的一行
注释掉原来的export, 修改为
export JAVA_HOME=/usr/local/jdk1.8.0_91

(2)yarn-env.sh
找到JAVA_HOME的一行
注释掉原来的export, 修改为
export JAVA_HOME=/usr/local/jdk1.8.0_91

(3)core-site.xml

<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/usr/local/hadoop/tmp</value>
               <description>Abase for other temporary   directories.</description>
       </property>
        <property>
               <name>hadoop.proxyuser.hosts</name>
               <value>*</value>
       </property>
       <property>
               <name>hadoop.proxyuser.groups</name>
               <value>*</value>
       </property>
</configuration>

PS:
1hdfs://master:8020 的master是主机名,和之前的hostname对应,8020是端口号,注意不要占用已用端口就可

2file:/usr/local/hadoop/tmp 指定到刚刚创建的文件夹

3所有的配置文件< name >和< value >节点处不要有空格,否则会报错

4 以上三点下同

(4)hdfs-site.xml

<configuration>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/usr/local/hadoop/tmp/dfs/data</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>1</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
</configuration>

( 5 ) mapred-site.xml

<configuration>
          <property>                                                                  <name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>
          <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>master:10020</value>
          </property>
          <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
       </property>
</configuration>

( 6)yarn-site.xml

<configuration>
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                                
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

(7)slaves
本文件记录了hadoop中的所有的从机节点
在文件中添加:

slave1
slave2

4 把修改好的hadoop复制到从机中
从机和主机中的hadoop文件夹内容是一样的。如果从机的jdk路径或者hadoop路径不一样,在相应的文件中修改路径(包括之前的bashrc等)即可。为了方便,尽量让所有机上路径相同。所以把主机上的hadoop文件夹放到从机上的同一位置。直接放到usr下可能会没有权限,可以先scp到主文件夹下,再mv过去

$sudo scp -r /usr/local/hadoop hadoop@192.168.235.2:/home/hadoop

上传完毕后,在从机上会看到主文件夹下多出了hadoop文件夹

打开从机终端:

$ sudo mv hadoop /usr/local/hadoop
$ sudo chown hadoop:hadoop /usr/local/hadoop

至此检查是否每一台机上都进行过开头所讲的所有步骤中的1-6步骤(复制过去的相当于已进行该步骤,但是若忘记复制前的某步修改或复制后忘记修改内容,如路径、主机名等,都可能导致之后出错)

5 主机中格式化namenode

$ cd /usr/local/hadoop
/usr/local/hadoop$ bin/hdfs namenode -format

注意只能在初始时格式化namenode,运行中格式化会丢失数据

6 启动hdfs

/usr/local/hadoop$ start-all.sh

7 查看hdfs进程
在每一台机上运行

$ jps

可以看到,master 上运行着SecondaryNamenode, ResourceManager, NameNode
两个slave上运行着DataNode,NodeManager

8 终止hdfs

/usr/local/hadoop$ stop-all.sh

PS:关于防火墙:有些博客提到了关闭防火墙,我配置时并没有遇到问题所以跳过了该步骤
关于环境变量:有些博客提到了/etc/environment文件,我配置时该文件也默认写好了,若以后改位置才会涉及修改此处。
如果大家配置过程中遇到问题可以从以下方面思考:
1下载的版本问题(jdk,hadoop,IDE等等)或下载不完整
2 防火墙
3 忘记了某一个步骤
4 路径、名字、端口错误
5 文件权限

以上就是我配置的过程,祝大家好运啦

阅读更多
换一批

没有更多推荐了,返回首页