ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Apache Hadoop 完全分布式集群搭建

2021-10-10 14:35:12  阅读:135  来源: 互联网

标签:xml hadoop yarn Hadoop 集群 slave2 Apache 节点 分布式


环境配置

Hadoop 框架是采用 Java 语言编写,需要 Java 环境(jvm)

  1. JDK版本:JDK8 版本
  2. 集群:使用 vmware 虚拟机虚拟三台 linux节点,linux操作系统: Centos7
  3. 虚拟机环境准备三台虛拟机(静态iP、关闭防火墙、修改主机名、配置兔密登录、集群时间同步)

首先创建一台虚拟机配置好 hadoop环境变量后分别克隆出 slave1、slave2节点

创建目录

mkdir /opt/software  -- 软件安装包
mkdir /opt/server    -- 软件安装目录

集群规划

框架 master slave1 slave2
HDFS NameNod、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager NodeManager ResourceManager、NodeManager

Hadoop

下载 Hadoop

下载 Hadoop 到 /opt/software

wget -P software http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz

解压 Hadoop 到 /opt/servers

tar -zxvf hadoop-2.10.1.tar.gz -C /opt/servers

配置环境变量

  1. 添加环境变量到vim /etc/profile
# HADOOP
export HADOOP_HOME=/opt/servers/hadoop-2.10.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  1. 使环境变量生效
source /etc/profile
  1. 使用 hadoop version 检查配置是否正常
    image

目录结构

drwxr-xr-x bin -- 对 hadoop 操作相关命令(.cmd为windows用)
drwxr-xr-x etc -- 配置文件目录
drwxr-xr-x include -- jar包和lib一样 
drwxr-xr-x lib -- hadoop本地库,存放jar包
drwxr-xr-x libexec -- 本地系统依赖库 
-rw-r--r-- LICENSE.txt
-rw-r--r-- NOTICE.txt 
-rw-r--r-- README.txt -- 描述文件 
drwxr-xr-x sbin -- 命令(hadoop停止启动等)
drwxr-xr-x share -- 一些hadoop相关jar包及官方案例

克隆节点

配置好以上环境后克隆出两台节点 slave1、slave2 并分配静态 IP。修改主机名
PS:需要在关机状态下克隆

  1. 修改本机静态 IP

  2. 修改本机 Hostname

  3. 配置 SSH 免密登录

配置免密登录请查看:https://www.cnblogs.com/orginly/p/15381178.html

集群规划实施

HDFS 集群配置

配置文件目录在

cd /opt/servers/hadoop-2.10.1/etc/hadoop

HDFS配置JDK环境

vim hadoop-env.sh

image

NameNode节点及数据存储目录

master 节点
PS:配置信息一定要放在 configuration标签中!

core-site.xml 默认配置在:
https://hadoop.apache.org/docs/r2.10.1/hadoop-project-dist/hadoop-common/core-default.xml

vim core-site.xml
<!-- 指定 HDFS 中的 NameNode 的地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
</property>
<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/servers/hadoop-2.10.1/data/tmp</value>
</property>

SecondaryNameNode

slave2 节点

hdfs-site.xml 默认配置
https://hadoop.apache.org/docs/r2.10.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

vim hdfs-site.xml
 <!-- 指定Hadoop辅助名称节点主机配置 -->
 <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>slave2:50090</value>
 </property>
 
 <!-- 指定副本数量 -->
 <property>
         <name>dfs.replication</name>
         <value>3</value>
 </property>

DataNode从节点

etc/hadoop/slaves

vim slaves

将原来内容删除然后将需要启动DatanNode的节点主机名写入

PS:不要加主机名后面加空格,也不要多起一行

image

MapReduce 集群配置

配置 MapReduce JDK路径

vim mapred-env.sh

解开 JAVA_HOME 注释并配置正确的JAVA_HOME路径
image

指定 MapReduce 计算框架运行 YARN 资源调度框架

因为只有模版文件mapred-site.xml.template所以需要复制一份出来改名为mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

默认配置:https://hadoop.apache.org/docs/r2.10.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

<!-- 指定 MapReduce 运行在 Yarn 上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

Yarn 集群配置

配置 Yarn JDK路径

vim yarn-env.sh 

export JAVA_HOME=/usr/java/jdk1.8.0_202

配置 ResourceManager

指定 ResourceManager 老大节点所在的计算机节点
slave2

vim yarn-site.xml 

默认配置:https://hadoop.apache.org/docs/r2.10.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>slave2</value>
</property>

<!-- reduce 获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
 

指定 NodeManager 从节点

如果已经配置 HDFS 的 DataNode 从节点 slave配置文件 则不需要在修改了
这两个信息是一样的,共用同一个文件

权限注意

Hadoop安装目录所属用户和所属用户组信息,默认是1000 1000,而我们操作 Hadoop集群的用户使用的是虚拟机的root用户,所以为了避免出现信息混乱,修改 Hadoop安装目录所属用户和用户组!!

chown -R root:root /opt/servers/hadoop-2.10.1
ll /opt/servers/hadoop-2.10.1

分发配置

编写集群分发脚本rsync-script

rsync 远程同步工具

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync做文件的复制要比scp的速度快, rsync只对差异文件做更新。scp是把所有文件都复制

如果系统没有这个命令

yum -y install rsync
rsync --version
  1. 基本语法
    命令 选项参数 要拷贝的文件路径/名称目的用户 @主机:目的路径/名称
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
  1. 选项参数说明
    |选项|功能|
    |-----|-----|
    |-r|递归|
    |-v|显示过程|
    |-l|拷贝符号连接|

集群分发脚本

期望:脚本+要同步的文件名称
说明:/usr/local/bin 中存在脚本,root 用户可以在任意地方执行

  1. 编写脚本
vim /usr/local/bin/rsync-script
#!/bin/bash
# 说明:循环复制文件到集群所有节点的相同目录下
# 1. 获取传入脚本的参数,参数个数
paramNum=$#
if ((paramNum == 0)); then
  echo No Parameters!
  exit
fi

# 2. 获取到文件名称
param1=$1 # 第一个参数

fileName=$(basename $param1) # 获取最后一个路径

# 3. 获取到文件的绝对路径
# 获取到上级目录,并以绝对路径方式进入,然后获取路径信息(解决传入相对路径问题)
$(cd -P $(dirname $param1))
dirName=$(pwd)

path=$dirName/$fileName # 文件路径

# 判断路径是否有效
if [ ! -f $fileName ] && [ ! -d $fileName ]; then
  echo "$path" failed: No such file or directory
  exit
fi

# 4. 获取到当前用户信息
username=$(whoami)

orginHost=slave # 主机名称前缀

# 由于主机名为master 所以需要在外面配置,如果你的linux主机名是有循序的,则不需要这一步
rsync -rvl $path ${username}@master:${dirName}

# 5. 执行 rsync 命令,循环执行同步到其他节点
for ((i = 1; i <= 2; i++)); do
  echo ---- target host ${orginHost}${i}
  echo ---- sync $path
  rsync -rvl $path ${username}@${orginHost}${i}:${dirName}
done

  1. 设置执行权限
chmod 777 /usr/local/bin/rsync-script

3.执行同步
PS:同步 hadoop 时如果 master 已经格式化 NameNode 请不要将 data 目录同步过去

rsync-script hadoop-2.10.11

启动集群

注意:如果集群是第一次启动,需要在 NameNode 所在节点格式化 NameNode,非第一次不用执行格式化 NameNode 操作!如果多次格式化会造成无法启动!

格式化NameNode 不能执行多次格式化

hadoop namenode -format

image

格式化成功后会在 /opt/servers/hadoop-2.10.1/data/tmp 目录创建文件
image

单节点启动

建议使用集群群起

  1. 启动 master 的 NameNode 和 DataName
hadoop-daemon.sh start namenode
jps
hadoop-daemon.sh start datanode
jps

image

  1. 启动 slave1 和 slave2 的 DateName
hadoop-daemon.sh start datanode
jps

PS:启动 NameNode 后可以在浏览器打开控制台 http://192.168.139.121:50070/ 主节点:50070

image

Yarn 集群单节点启动

建议使用集群群起

启动 Yarn 主节点

Yarn集群放在了 slave2 上。所以需要在 slave2 进行操作

yarn-daemon.sh start resourcemanager

image

启动 NodeManager 从节点

master 、slave1、slave2 都启用从节点

yarn-daemon.sh start nodemanager

image

集群群起

** 如果已经单节点方式启动了 Hadoop,可以先停止之前的启动的 NameNode 与 DataNode 进程。如果之前 NameNode 没有执行格式化这里需要执行格式化,千万不要重复执行!!**

hadoop namenode -format

启动 HDFS 集群

master 节点上执行

start-dfs.sh

执行完毕后检查 master、slave1、slave2的 NameNode、DataName、SecondaryNameNode是否启动成功!
image

启动 Yarn 集群

ResourceManager主节点在 slave2 节点,所以要上 slave2 节点执行

start-yarn.sh

执行完毕后检查 master、slave1、slave2的 ResourceManager、NodeManager 是否启动成功!
image

集群测试

HDFS 分部式存储

从 Linux 本地文件系统上传下载文件验证 HDFS 集群工作正常

cd /root
date > test.txt
# 创建目录
hadoop fs -mkdir -p /test/input
# 上传文件
hadoop fs -put test.txt /test/input
# 下载文件
hadoop fs -get /test/input/test.txt t1.txt

image

MapReduce 分布式计算

vim wx.txt 

hadoop mapreduce yarn
hdfs hadoop mapreduce
mapreduce yarn orginly
orginly
orginly
feng li feng li
hadoop fs -mkdir /mapReduce
hadoop fs -put /root/wc.txt /mapReduce
  • 回到 Hadoop 目录/opt/servers/hadoop-2.10.1
  • 执行官方示例程序 wordcount 单词统计
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /mapReduce /wcoutput

image

也可以登录 Yarn 集群控制面板查看
控制面板安装在 resourceManager 的节点 http://slave2:8088/cluster

历史日志服务器

在 Yarn 中运行的任务产生的日志数据不能查看,为了查看程序的历史运行情况,需要配置一下历史日志服务器。

配置日志服务器

master节点

  1. 配置 mapred-site.xml
<!-- 历史服务器地址 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>master:10020</value>
</property>

<!-- 历史服务器web地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>master:19888</value>
</property>
  1. 分发 mapred-site.xml 到其他节点
rsync-script mapred-site.xml
  1. master 启动历史服务器
 mr-jobhistory-daemon.sh start historyserver
jps
  1. 访问历史服务器
    http://master:19889

image

配置日志的聚集

日志聚集:应用(job)运行完成以后,将应用运行日志信息从各个 task 汇总上传到 HDFS 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动 NodeManager、 ResourceManager和 HistoryManager

  1. 配置 yarn-site.xml
vim /opt/servers/hadoop-2.10.1/etc/hadoop/yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800</value>
</property>
  1. 分发 yarn-site.xml 到其他节点
rsync-script yarn-site.xml
  1. 停止 yarn 集群
    slave2 节点
stop-yarn.sh
jps
  1. 重启 JobHistoryServer
    master
mr-jobhistory-daemon.sh stop historyserver
mr-jobhistory-daemon.sh start historyserver
jps
  1. 启动 yarn 集群
    slave2 节点

执行官方测试案例

  1. 删除之前执行生成的文件
hadoop fs -rm -r /wcoutput
  1. 执行
/opt/servers/hadoop-2.10.1

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /mapReduce /wcoutput
  1. 查看日志
    image
    image
    image

标签:xml,hadoop,yarn,Hadoop,集群,slave2,Apache,节点,分布式
来源: https://www.cnblogs.com/orginly/p/15389375.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有