Hadoop分布式物理机集群搭建(hdfs和yarn)版本:hadoop-3.3.0

准备工作:
服务器配置(6台),采用1+1+4的集群配置,具体信息如下:
168.61.1.11(用作NameNode和ResourceManager),168.61.1.12、168.61.1.13、168.61.1.14、168.61.1.15、168.61.1.16(用作DataNode和NodeManager))。
注:后续将安装HDFS HA QJM,计划在11,12,13上安装Journal Node,12节点同时作为NameNode

大概步骤如下:
以下这些配置都只是先在master操作,然后用命SCP拷贝复制到其它服务器。
1)下载最新hadoop镜像:hadoop-3.3.0,解压到相应目录;
2)配置环境变量在/etc/hosts, /etc/profile,hadoop-en.sh, yarn-en.sh, mapreduce-env.sh;
3)设置免密登录;
4)配置相应文件:workers,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml;
5)启动集群;

1、修改/etc/hosts

168.61.1.11 hadoop01
168.61.1.12 hadoop02
168.61.1.13 hadoop03
168.61.1.14 hadoop04
168.61.1.15 hadoop05
168.61.1.16 hadoop06

2、安装jdk8(略)

3、修改/etc/profile

JAVA_HOME=/usr/local/tools/jdk1.8.0_231
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

hadoop是守护线程 读取不到 /etc/profile 里面配置的JAVA_HOME路径 ,
所以在 hadoop-env.sh,yarn-env.sh,mapred-env.sh配置 JAVA_HOME, 这样才能读取到JAVA_HOME

# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/local/tools/jdk1.8.0_231

将master1上的/etc/profile, hadoop-env.sh,yarn-env.sh,mapred-env.sh传到其他服务器上,
再登录到每个服务器上去:source /etc/profile, ./hadoop-env.sh, ./yarn-env.sh, ./mapred-env.sh。

4、六台机器ssh相互信任

ssh生成相应密钥对:id_rsa私钥和id_rsa.pub公钥

ssh-keygen -t rsa -P ''

注:使用ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa命令可避免交互式操作。

默认是存在/当前user/.ssh(/root/.ssh或者/home/user/.ssh)下的!
在主节点上将公钥拷到一个特定文件authorized_keys中,

cat id_rsa.pub >> authorized_keys

试一下是否本地免密登陆设置成功:

ssh localhost  #第一次登陆需要确定,输入yes

如果没有问题,那么配置其他服务器,其实只需要把本机master1的id_rsa.pub复制到其他服务器上就可以了!这里就选择ssh-copy-id命令传送到其他服务器上。

# ssh-copy-id appadmin@hadoop02
# ssh-copy-id appadmin@hadoop03
# ssh-copy-id appadmin@hadoop04
# ssh-copy-id appadmin@hadoop05
# ssh-copy-id appadmin@hadoop06

5、关闭防火墙或者六台机器ip都加到白名单

[root@hadoop01 opt]# systemctl stop firewalld
[root@hadoop01 opt]# systemctl disable firewalld

6、配置hadoop环境

主要是修改4个配置文件:core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml

配置core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop-3.3.0/tmp</value>
        </property>
</configuration>

配置hdfs-site.xml

<configuration>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file://${hadoop.tmp.dir}/dfs/nn,file://${hadoop.tmp.dir}/dfs/nn2</value>
        </property>
        <property>
                <name>dfs.namenode.edits.dir</name>
                <value>file://${hadoop.tmp.dir}/dfs/edits</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file://${hadoop.tmp.dir}/dfs/dn</value>
        </property>
        <property>
                <name>dfs.blocksize</name>
                <value>268435456</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
</configuration>

配置yarn-site.xml,注意几台机器配置不同。
以下是ResourceManager上的配置信息

<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>40960</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
        <property>
                <name>yarn.nodemanager.remote-app-log-dir</name>
                <value>{hadoop.tmp.dir}/tmp/logs</value>
        </property>
        <property>
                <name>yarn.nodemanager.log-dirs</name>
                <value>/opt/hadoop-3.3.0/tmp/yarndata/logs</value>
        </property>
        <property>
                <name>yarn.nodemanager.local-dirs</name>
                <value>${hadoop.tmp.dir}/nm-local-dir</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop01</value>
        </property>
        <property>
                <name>yarn.scheduler.maximum-allocation-vcores</name>
                <value>16</value>
                <description>提交一个任务允许申请的最大cpu核数</description>
        </property>
        <property>
                <name>yarn.scheduler.maximum-allocation-mb</name>
                <value>40960</value>
                <description>提交一个任务允许申请的最大内存(注意结合其他node节点的yarn.nodemanager.resource.memory-mb ,不要超过它)
                </description>
        </property>
</configuration>

以下是NodeManager上的配置信息:(在一台机器上配置好后,复制到其他NodeManager机器)

<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>40960</value>
                <description> 
                    节点使用的最大内存(结合host-155的yarn.scheduler.maximum-allocation-mb)
                </description>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
        <property>
                <name>yarn.nodemanager.remote-app-log-dir</name>
                <value>{hadoop.tmp.dir}/tmp/logs</value>
        </property>
        <property>
                <name>yarn.nodemanager.log-dirs</name>
                <value>/opt/hadoop-3.3.0/tmp/yarndata/logs</value>
        </property>
        <property>
                <name>yarn.nodemanager.local-dirs</name>
                <value>${hadoop.tmp.dir}/nm-local-dir</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop01</value>
        </property>
        <property>
                <name>yarn.nodemanager.hostname</name>
                <value>hadoop06</value>--#其它机器注意修改这个名字
        </property>
        <property>
                <name>yarn.nodemanager.resource.cpu-vcores</name>
                <value>16</value>
                <description>节点使用的cpu核数</description>
        </property>
</configuration>

配置mapred-site.xml

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

配置workers(在每台datanode上都配置)

hadoop02
hadoop03
hadoop04
hadoop05
hadoop06

修改/etc/profile

JAVA_HOME=/usr/local/tools/jdk1.8.0_231
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
HADOOP_HOME=/opt/hadoop-3.3.0
PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH
export PATH

修改~/.bash_profile (这部分的脚本也可以合并入profile中)

JAVA_HOME=/usr/local/tools/jdk1.8.0_231
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
HADOOP_HOME=/opt/hadoop-3.3.0
PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH
export PATH

7、启动集群

1)格式化namenode:

hdfs namenode -format

2)启动hdfs集群:

/opt/hadoop-3.3.0/sbin/start-dfs.sh

3)启动yarn集群:

/opt/hadoop-3.3.0/sbin/start-yarn.sh

4)查看启动结果:
在hadoop01上,jps可以看到:

[appadmin@168-61-1-11 sbin]$ jps
16610 Jps
28931 NameNode
30503 ResourceManager

在其它节点上,jps可以看到:

[appadmin@168-61-1-16 hadoop]$ jps
17556 DataNode
2983 Jps
18379 NodeManager

5)访问管理节点:

HDFS WEB管理:http://168.61.1.11:9870/
在这里插入图片描述

Yarn WEB管理:http://168.61.1.11:8088/
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_39809957/article/details/112990935