一、特点

多个节点一起运行。

二、分析

1)准备3台客户机(关闭防火墙、静态ip、主机名称)

2)安装jdk

3)配置环境变量

4)安装hadoop

5)配置环境变量

6)安装ssh

7)配置集群

8)启动测试集群

三、虚拟机准备

克隆三个虚拟机,修改IP,主机名和IP映射即可

四、scp命令

说明:scp可以实现服务器与服务器之间的数据拷贝。

实操:

将zhiyou101中/usr/local/java和/usr/local/hadoop文件拷贝到zhiyou102、zhiyou103上。

[root@zhiyou101 /]# scp -r /usr/local/java/  root@zhiyou102:/usr/local

[root@zhiyou101 /]# scp -r /usr/local/hadoop/  root@zhiyou102:/usr/local

[root@zhiyou101 /]# scp -r /usr/local/java/  root@zhiyou103:/usr/local

[root@zhiyou101 /]# scp -r /usr/local/hadoop/  root@zhiyou103:/usr/local

五、rsync命令

说明:

rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

基本语法:

rsync -rvl  $pdir/$fname $user@test$host:$pdir

命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径

案例实操:

把本机/var/tmp目录同步到test222服务器的root用户下的/var/tmp目录

rsync –rvl /var/tmp/*  root@test222:/var/tmp

六、编写xsync脚本命令

1)需求分析

           循环复制文件到所有节点的相同目录下。

2) 案例实操

          1.在/usr/local/bin目录下创建xsync文件

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi

#2 获取文件名称

p1=$1

fname=`basename $p1`

echo fname=$fname

#3 获取上级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

 

#4 获取当前用户名称

user=`whoami`

#5 循环

for((host=101; host<104; host++)); do

        #echo $pdir/$fname $user@zhiyou$host:$pdir

        echo --------------- zhiyou$host ----------------

        rsync -rvl $pdir/$fname $user@zhiyou$host:$pdir

done

 

          2.修改脚本 xsync 具有执行权限

                      [root@test221bin]# chmod a+x xsync

          3.调用脚本形式:xsync 文件名称

七、ssh免密登陆

1)进入到我的家目录

cd  ~/.ssh

2)生成公钥和私钥

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

3)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id 192.168.241.202

八、部署完全分布式

1)集群部署规划

2)配置文件

       (1)core-site.xml

<!-- 指定HDFS中NameNode的地址 -->

         <property>

                  <name>fs.defaultFS</name>

        <value>hdfs://zhiyou101:9000</value>

         </property>

 

         <!-- 指定hadoop运行时产生文件的存储目录 -->

         <property>

                  <name>hadoop.tmp.dir</name>

                  <value>/var/hadoop-2.7.3/data/tmp</value>

         </property>

        (2)Hdfs

                 1.hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.8

 

                2.hdfs-site.xml

<configuration>      

       <!-- 指定HDFS副本的数量 -->

       <!-- <property>

              <name>dfs.replication</name>

              <value>3</value>

       </property> -->

       <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>zhiyou102:50090</value>

    </property>

</configuration>

              3.slaves

zhiyou101

zhiyou102

zhiyou103

      (3)yarn

               1.yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.8

                2.yarn-site.xml

     

<!-- reducer获取数据的方式 -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

<!-- 指定YARN的ResourceManager的地址 -->

       <property>

              <name>yarn.resourcemanager.hostname</name>

              <value>zhiyou103</value>

       </property>

    (4)mapreduce

               1.mapred-env.sh

export JAVA_HOME=/usr/local/jdk1.8

              2.mapred-site.xml

<!-- 指定mr运行在yarn上 -->

       <property>

              <name>mapreduce.framework.name</name>

              <value>yarn</value>

       </property>

3)在集群上分发以上所有文件

         [root@zhiyou101 etc]# xsync hadoop/

九、集群启动及测试

(0)如果集群是第一次启动,需要格式化namenode

(1)启动HDFS

              [root@zhiyou101 ~]# start-dfs.sh

              [root@zhiyou101 var]# jps

             2306 QuorumPeerMain

             8194 Jps

             7864 NameNode

             7966 DataNode

             [root@zhiyou102 var]# jps

             2322 QuorumPeerMain

             4034 Jps

             3962 DataNode

             [root@zhiyou103 var]# jps

             4470 Jps

             2312 QuorumPeerMain

             4330 DataNode

             4429 SecondaryNameNode

(2)启动yarn

               [root@zhiyou102 var]# start-yarn.sh

              注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在

               ResouceManager所在的机器上启动yarn

(3)上传文件等操作

              这里不再演示

十、Hadoop启动停止方式

1)各个服务组件逐一启动

         (1)分别启动hdfs组件

         (2)启动yarn

2)各个模块分开启动(配置ssh是前提)常用

         (1)整体启动/停止hdfs

                  start-dfs.sh

                  stop-dfs.sh

         (2)整体启动/停止yarn

                  start-yarn.sh

                  stop-yarn.sh

         3)全部启动(不建议使用)

                  start-all.sh

                  stop-all.sh

十一、配置集群常见问题

1)防火墙没关闭、或者没有启动yarn

         2)主机名称配置错误

                  /etc/hosts

         3)ip地址配置错误

         4)ssh没有配置好

         5)配置文件修改不细心

         6)未编译源码

         7)datanode不被namenode识别问题

              Namenode在format初始化的时候会形成两个标识,blockPoolId和clusterId。新的datanode加入时,会获取这两

               个标识作为自己工作目录中的标识。

              一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然持有原来的id,就不会被

              namenode识别。

               解决办法,删除datanode节点中的数据后,再次重新格式化namenode。

          8)不识别主机名称

           问题:

                  解决办法:

                  (1)在/etc/hosts文件中添加192.168.1.102 hadoop102

                  (2)主机名称不要起hadoop  hadoop000等特殊名称

         9)datanode和namenode进程同时只能工作一个。

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐