hadoop完全分布式集群搭建全部流程之三:完全分布式集群搭建

2020-09-30 15:37发布

分析: 一台机器配置安装,其他机器分发修改

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

       2 )安装 jdk: 配置环境变量

       3 )安装 hadoop: 配置环境变量

       4 )安装 ssh

       5)编写xsync和xcall脚本

       6 )配置集群

        7 )启动测试集群

步骤:

选定一个台机器

1.在一台机器上安装jdk参考上面2

2.在一台机器上安装hadoop,参考上面2 .配置ssh:集群可以同时操作

  这里我用于测试集群ip地址分别为192.169.1.102-104三台主机。对应的主机名为hadoop102-104

(1)进入到我的home目录

               cd  ~/.ssh  如何没有.ssh目录,可以新建.ssh目录,然后修改chown为当前用户

(2)生成公钥和私钥:

            ssh-keygen -t rsa

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

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

           ssh-copy-id 192.168.1.102


4. 编写集群分发脚本 xsync  

( 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=102; host<105 ; host++)); do

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

        echo --------------- hadoop$host ----------------

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

done

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

              [root@hadoop102 bin]# chmod a+x xsync

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


5.编写脚本分发xcall

1 )需求分析:在所有主机上同时执行相同的命令

xcall + 命令             

2 )具体实现

( 1 )在 /usr/local/bin 目录下创建 xcall 文件,文件内容如下:

#!/bin/bash

pcount=$#

if((pcount==0));then

        echo no args;

        exit;

fi

echo -------------localhost----------

$@

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

        echo ----------hadoop$host---------

        ssh hadoop$host $@

done

     (2)修改脚本 xcall 具有执行权限

              [root@hadoop102 bin]# chmod a+x xcall

     (3)调用脚本形式: xcall 操作命令

      [root@hadoop102 ~]# xcall rm -rf /opt/tmp/profile


6.集群配置

1 )集群部署规划


Hadoop102

hadoop103

hadoop104

HDFS


NameNode

DataNode


DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager


NodeManager

2 )配置文件

        ( 1 ) core-site.xml

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

       <property>

              <name>fs.defaultFS</name>

        <value>hdfs://hadoop102:9000</value>

       </property>

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

       <property>

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

              <value>/opt/module/hadoop-2.7.2/data/tmp</value>

       </property>


        ( 2 ) Hdfs

              hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79


               hdfs-site.xml

<configuration>     

       <property>

              <name>dfs.replication</name>

              <value>3</value>

       </property>

       <property>

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

        <value>hadoop104:50090</value>

    </property>

</configuration>


              slaves

hadoop102

hadoop103

hadoop104


        ( 3 ) yarn

              yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79


              yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

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

    <property>

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

        <value>mapreduce_shuffle</value>

    </property>

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

       <property>

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

              <value>hadoop103</value>

       </property>

       </configuration>


        ( 4 ) mapreduce

              mapred-env.sh

export JAVA_HOME=/opt/modules/jdk1.7.0_79


              mapred-site.xml

<configuration>

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

       <property>

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

              <value>yarn</value>

       </property>

       </configuration>


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

cd /opt/module/hadoop-2.7.2/etc/hadoop

xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml

xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves

4 )查看文件分发情况

        xcall cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves

7集群启动及测试

1)启动集群

        ( 0 )如果集群是第一次启动,需要格式化 namenode (如果再次格式化重启,要把每个集群下的data都干掉,logs)

               [root@hadoop102 hadoop-2.7.2]# bin/hdfs namenode -format

( 1 )启动 HDFS :

[root@hadoop102 hadoop-2.7.2]# sbin/start-dfs.sh

[root@hadoop102 hadoop-2.7.2]# jps

4166 NameNode

4482 Jps

4263 DataNode

[root@hadoop103 桌面 ]# jps

3218 DataNode

3288 Jps

[root@hadoop104 桌面 ]# jps

3221 DataNode

3283 SecondaryNameNode

3364 Jps

( 2 )启动 yarn

sbin/start-yarn.sh

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

2 )集群基本测试

( 1 )上传文件到集群

        上传小文件

        bin/hdfs dfs -mkdir -p /user/ robot /tmp/conf

       bin/hdfs dfs -put etc/hadoop/*-site.xml /user/ robot /tmp/conf

        上传大文件

[ robot @hadoop102 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz  /user/ robot /input

( 2 )上传文件后查看文件存放在什么位置

        文件存储路径

       [ robot @hadoop102 subdir0]$ pwd

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

        查看文件内容

[ robot @hadoop102 subdir0]$ cat blk_1073741825

hadoop

robot

robot

( 3 )拼接

-rw-rw-r--. 1  robot   robot  134217728 5 月   23 16:01 blk_1073741836

-rw-rw-r--. 1  robot   robot    1048583 5 月   23 16:01 blk_1073741836_1012.meta

-rw-rw-r--. 1  robot   robot   63439959 5 月   23 16:01 blk_1073741837

-rw-rw-r--. 1  robot   robot     495635 5 月   23 16:01 blk_1073741837_1013.meta

[ robot @hadoop102 subdir0]$ cat blk_1073741836>>tmp.file

[ robot @hadoop102 subdir0]$ cat blk_1073741837>>tmp.file

[ robot @hadoop102 subdir0]$ tar -zxvf tmp.file

( 4 )下载

[ robot @hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/ robot /input/hadoop-2.7.2.tar.gz

3 )性能测试集群

        写海量数据

        读海量数据


Hadoop 启动停止方式

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

        ( 1 )分别启动 hdfs 组件

              hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode

        ( 2 )启动 yarn

              yarn-daemon.sh  start|stop  resourcemanager|nodemanager

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

作者:涤生手记

链接:https://blog.csdn.net/qq_26442553/article/details/78695363

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。