Hadoop3.x完全分布式运行模式配置

Posted 数据攻城小狮子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop3.x完全分布式运行模式配置相关的知识,希望对你有一定的参考价值。

文章目录

前期准备

三台虚拟机,配置好java,hadoop-3.1.3解压到三台虚拟机指定目录下

hadoop102,hadoop103,hadoop104

集群部署规划

注意:NameNode和SecondaryNameNode不要安装在同一台服务器
注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

hadoop102hadoop103hadoop104
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

常用端口号说明

DaemonAppHadoop2Hadoop3
NameNode PortHadoop HDFS NameNode8020 / 90009820
Hadoop HDFS NameNode HTTP UI500709870
Secondary NameNode PortSecondary NameNode500919869
Secondary NameNode HTTP UI500909868
DataNode PortHadoop HDFS DataNode IPC500209867
Hadoop HDFS DataNode500109866
Hadoop HDFS DataNode HTTP UI500759864

SSH无密登录配置

ssh-keygen -t rsa

敲三个回车

ssh-copy-id hadoop102
ssh-copy-id hadoop102
ssh-copy-id hadoop102

三台主机互相登录一下

ssh hadoop10x

配置环境变量

[xwk@hadoop102 ~]$ cd /etc/profile.d/
[xwk@hadoop102 profile.d]$ vim my_env.sh 
#java
export JAVA_HOME=/opt/software/jdk
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/opt/software/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[xwk@hadoop102 profile.d]$ source /etc/profile

给普通用户xwk root权限

我的用户名是xwk,你们根据自己的用户名设置

sudo vim /etc/sudoers
找到这行,在root那行下面插入xwk那行
## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL
xwk     ALL=(ALL)       NOPASSWD:ALL

强制保存退出:wq!

配置集群

[xwk@hadoop102 profile.d]$ cd /opt/software/hadoop-3.1.3/etc/hadoop/

core-site.xml

将xwk改为你自己的用户名。还有文件路径改成你自己的

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/software/hadoop-3.1.3/data</value>
</property>

<!-- 配置HDFS网页登录使用的静态用户为xwk -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>xwk</value>
</property>

<!-- 配置该xwk(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.xwk.hosts</name>
        <value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.xwk.groups</name>
        <value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.xwk.groups</name>
        <value>*</value>
</property>
<!--支持LZO压缩 -->
     <property>
        <name>io.compression.codecs</name>
        <value>
            org.apache.hadoop.io.compress.GzipCodec,
            org.apache.hadoop.io.compress.DefaultCodec,
            org.apache.hadoop.io.compress.BZip2Codec,
            org.apache.hadoop.io.compress.SnappyCodec,
            com.hadoop.compression.lzo.LzoCodec,
            com.hadoop.compression.lzo.LzopCodec
        </value>
    </property>

    <property>
        <name>io.compression.codec.lzo.class</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
    </property>
</configuration>

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

</configuration>

mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

</configuration>

配置workers

vim /hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104

将hadoop目录复制到其他主机相同目录下

格式化

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

hdfs namenode -format

启动

启动HDFS(hadoop102)上面

cd /opt/software/hadoop-3.1.3/sbin/
./start-dfs.sh

启动YARN(hadoop103)上面

sbin/start-yarn.sh

Web端查看HDFS的NameNode
浏览器中输入:http://hadoop102:9870

Web端查看YARN的ResourceManager
浏览器中输入:http://hadoop103:8088

以上是关于Hadoop3.x完全分布式运行模式配置的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop3.x - 本地安装 + 完全分布式安装 + 集群配置 + xsync分发脚本 (解决root用户启动Hadoop集群的报错问题)

大数据技术——Hadoop3.X入门搭建+安装调优(1.入门)

完全分布式Hadoop3.X的搭建

大数据学习

Hadoop完全分布式配置

linux18.04+jdk11.0.2+hadoop3.1.2部署伪分布式