Hadoop3.x完全分布式运行模式配置
Posted 数据攻城小狮子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop3.x完全分布式运行模式配置相关的知识,希望对你有一定的参考价值。
文章目录
前期准备
三台虚拟机,配置好java,hadoop-3.1.3解压到三台虚拟机指定目录下
hadoop102,hadoop103,hadoop104
集群部署规划
注意:NameNode和SecondaryNameNode不要安装在同一台服务器
注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
常用端口号说明
Daemon | App | Hadoop2 | Hadoop3 |
---|---|---|---|
NameNode Port | Hadoop HDFS NameNode | 8020 / 9000 | 9820 |
Hadoop HDFS NameNode HTTP UI | 50070 | 9870 | |
Secondary NameNode Port | Secondary NameNode | 50091 | 9869 |
Secondary NameNode HTTP UI | 50090 | 9868 | |
DataNode Port | Hadoop HDFS DataNode IPC | 50020 | 9867 |
Hadoop HDFS DataNode | 50010 | 9866 | |
Hadoop HDFS DataNode HTTP UI | 50075 | 9864 |
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集群的报错问题)