欢迎光临
我们一直在努力

Anolis OS 7.9 多节点 Hadoop3.3.6 完整分步(3 节点集群)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

3 台机器,全部 Anolis7.9,当前这台是 master;另外两台 node1、node2 用户:xiaohuozi,后面新建hadoop专门跑大数据,所有节点全部执行【前置环境】

集群规划

表格

节点

主机名

IP

角色

master

master

192.168.3.57

NameNode、ResourceManager、SecondaryNameNode

node1

node1

192.168.3.58

DataNode、NodeManager

node2

node2

192.168.3.59

DataNode、NodeManager

把下面 IP 替换成你三台虚拟机真实 IP!

一、所有 3 台机器统一执行(前置环境)

1. 修改主机名

# master节点执行

sudo hostnamectl set-hostname master

# node1节点

sudo hostnamectl set-hostname node1

# node2节点

sudo hostnamectl set-hostname node2

改完重新登录终端,主机名才刷新。

2. 配置 hosts 文件(三台内容一模一样)

sudo vim /etc/hosts

写入,IP 换成你自己三台的 IP:

192.168.3.57 master

192.168.3.58 node1

192.168.3.59 node2

保存,测试ping master、ping node1能通.

3.所有节点创建 hadoop 运行用户

# 设置密码,三台设置同一个密码,方便操作

useradd hadoop

passwd hadoop

vim /etc/sudoers 给Hadoop用户增加sudo权限。

4. 关闭防火墙、SELinux(全部节点,如不关闭需要配置防火墙策略)

# 防火墙(如关闭命令不对请注意版本的区别)

sudo systemctl stop firewalld

sudo systemctl disable firewalld

# SELinux

sudo setenforce 0

sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

# 关闭swap

sudo swapoff -a

sudo sed -i '/swap/s/^/#/' /etc/fstab

5. 所有节点安装 JDK8(最好不要使用系统自带的JDK,后续运行jps会出问题,已踩坑)

sudo yum install java-1.8.0-openjdk-devel -y

readlink -f /usr/bin/java

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.an7.x86_64/jre/bin/java

#在/etc/profile下配置JAVA_HOME设置全局变量(如担心影响全局可忽略此处)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.an7.x86_64
export PATH=$JAVA_HOME/bin:$PATH

#HADOOP
export HADOOP_HOME=/home/hadoop/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

java -version

echo $JAVA_HOME

#配置单独的用户环境,如下。切换 hadoop 用户配置 JAVA_HOME

su – hadoop

vim ~/.bashrc

# 在末尾添加

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.an7.x86_64/jre/
export PATH=$JAVA_HOME/bin:$PATH

source ~/.bashrc

java -version

echo $JAVA_HOME

二、仅 master 节点操作:配置 ssh 免密登录(hadoop 用户下)

su – hadoop

ssh-keygen -t rsa

# 一路回车,不要设置密码

# 分发公钥到三台

ssh-copy-id hadoop@master

ssh-copy-id hadoop@node1

ssh-copy-id hadoop@node2

#可能出现的问题

Permission denied:hadoop 用户密码输错,第一次分发 master 本机公钥时报的

Host key verification failed:之前 SSH 连过 node1/node2,旧主机指纹和现在不匹配,ssh 安全校验拦截,ssh-copy-id直接失败

解决步骤(hadoop 用户,master 节点操作)

第一步:清理旧主机指纹(解决 Host key verification failed)

# 清除三台旧记录

ssh-keygen -R master

ssh-keygen -R node1

ssh-keygen -R node2

第二步:手动 ssh 登录一次三台机器,缓存新指纹(必须做)

输入yes确认,然后输入正确的 hadoop 用户密码

ssh hadoop@master

ssh hadoop@node1

ssh hadoop@node2

登录成功后直接exit退出回来。

第三步:重新分发公钥

ssh-copy-id hadoop@master

ssh-copy-id hadoop@node1

ssh-copy-id hadoop@node2

⚠️ 这里一定要输入三台机器 hadoop 用户的正确密码,密码三台建议保持一致!

第四步:验证免密是否成功(不用输密码才算 ok)

ssh hadoop@master

ssh hadoop@node1

ssh hadoop@node2

任意一条如果不需要输入密码直接登录,代表免密成功。

✅ 测试:ssh hadoop@node1,不用输密码直接登录才算成功

三、master 节点:下载解压 Hadoop(hadoop 用户)

#新建一个app包用来存放安装包

mkdir /home/hadoop/app

cd /home/hadoop/app

# 阿里云镜像下载(太慢)

wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

#这个快apache全球CDN

wget -c https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

tar -zxvf hadoop-3.3.6.tar.gz -C /home/hadoop/

#配置 hadoop 用户的环境变量 vim ~/.bashrc,追加完整:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.an7.x86_64/jre/
export HADOOP_HOME=/home/hadoop/hadoop-3.3.6
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

source ~/.bashrc

hadoop version

四、master 修改 Hadoop 配置文件 $HADOOP_HOME/etc/hadoop

1. hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

末尾增加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.an7.x86_64
export HDFS_NAMENODE_USER="hadoop"
export HDFS_DATANODE_USER="hadoop"
export HDFS_SECONDARYNAMENODE_USER="hadoop"
export YARN_RESOURCEMANAGER_USER="hadoop"
export YARN_NODEMANAGER_USER="hadoop"

2. core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://master:9000</value>

    </property>

    <property>

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

        <value>/home/hadoop/hadoopdata</value>

    </property>

</configuration>

3. hdfs-site.xml

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>2</value>

    </property>

    <property>

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

        <value>master:9868</value>

    </property>

</configuration>

4. mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>

    <property>

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

        <value>yarn</value>

    </property>

</configuration>

5. yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>

    <property>

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

        <value>mapreduce_shuffle</value>

    </property>

    <property>

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

        <value>master</value>

    </property>

</configuration>

6. workers(datanode 节点列表)

vim $HADOOP_HOME/etc/hadoop/workers

删掉里面默认localhost,写入:

node1

node2

五、master 分发整个 hadoop 目录到 node1 node2

# -rl :递归 + 保留软链接

rsync -rl /home/hadoop/hadoop-3.3.6 hadoop@node1:/home/hadoop/

rsync -rl /home/hadoop/hadoop-3.3.6 hadoop@node2:/home/hadoop/

分发完,node1、node2 的 hadoop 配置自动同步,不用重复写配置!

六、初始化并启动集群(仅 master,hadoop 用户)

# 格式化namenode,【只执行一次!重复格式化集群直接报废!!!!!】

hdfs namenode -format

# 启动HDFS

start-dfs.sh

# 启动YARN

start-yarn.sh

验证进程,每台机器执行 jps

  • master:NameNode、SecondaryNameNode、ResourceManager
  • node1/node2:DataNode、NodeManager

Web 访问: HDFS:http://192.168.3.57:9870 YARN:http://192.168.3.57:8088

集群停止命令

stop-yarn.sh

stop-dfs.sh

rm -rf /tmp/hadoop-hadoop-*.pid

# 查看进程

jps

七、新增node或者某台node挂掉之后重新接入

如有新增请按照之前的配置先完成基础配置,完成基础配置之后下面操作和挂掉重启的node操作相同。

下列命令在挂掉重启的机器上运行

hdfs –daemon start datanode

yarn –daemon start nodemanager

jps

完成之后将主节点的配置重新同步至挂掉的node

scp $HADOOP_HOME/etc/hadoop/{core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml} hadoop@node2:$HADOOP_HOME/etc/hadoop/

输入密码

赞(0)
未经允许不得转载:171主机测评 » Anolis OS 7.9 多节点 Hadoop3.3.6 完整分步(3 节点集群)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址