hadoop3 完全分布式安装

1. 环境准备

linux-centos7 集群环境搭建

2. 下载软件

https://dlcdn.apache.org/hadoop/common/
在这里插入图片描述

找到自己想要的版本下载,上传文件到服务器的 /opt/software 目录(放在哪里可以自己斟酌,这里随意一个目录就可以)

3. 上传解压

将软件解压到 /opt/module 目录

tar -zxvf hadoop-3.2.4.tar.gz -C /opt/module
cd /opt/module
mv hadoop-3.2.4 hadoop

4. 配置环境变量

# 创建并编辑环境变量文件
sudo vim /etc/profile.d/my_env.sh

文件中新增以下内容

# HADOOP
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

读取文件并测试是否安装成功

source /etc/profile.d/my_env.sh 

5. 完全分布式集群搭建

5.1. 修改 hosts 文件

三台服务器都要修改

sudo vim /etc/hosts

# 添加以下内容,使得服务器之间可以通过域名互相访问
192.168.200.102 mitchell-101
192.168.200.103 mitchell-102
192.168.200.104 mitchell-103

5.2. hadoop 相关配置

5.2.1. env 配置

由于我们在学习阶段资源优先,自己部署大数据非常占用资源,我们这里将集群的启动内存调小,从而节省我们的资源,正式环境不需要配置

cd /opt/module/hadoop/etc/hadoop/
vim hadoop-env.sh

在文档末尾添加下方内容

# 配置 JAVA 程序的堆内存,相当于 Xmx 和 Xms,单位默认为 MB
export HADOOP_HEAPSIZE_MAX=64
export HADOOP_HEAPSIZE_MIN=64

# 设置启动用户为 ROOT,如果不使用 ROOT 启动可以不配置
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

5.2.2. core 配置

vim core-site.xml 
<configuration>
    
    <!-- 指定 NameNode 的内部通讯地址,这里推荐使用 8020 端口 -->
    <property>
    	<name>fs.defaultFS</name>
        <value>hdfs://mitchell-101:8020</value>
    </property>
    
    <!-- 指定数据储存目录,默认是在 /tmp 路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop/data</value>
    </property>
    
    <!-- 指定 hdfs 网页登入的静态用户 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>mitchell</value>
    </property>    
    
</configuration>

5.2.3. hdfs 配置

vim hdfs-site.xml 
<configuration>
    
    <!-- 指定 NameNode 的 WEB 访问地址 -->
    <property>
    	<name>dfs.namenode.http-address</name>
        <value>mitchell-101:9870</value>
    </property>
    
    <!-- 2NN WEB 访问地址 -->
    <property>
    	<name>dfs.namenode.secondary.http-address</name>
        <value>mitchell-103:9868</value>
    </property>
      
</configuration>

5.2.4. yarn 配置

vim yarn-site.xml 
<configuration>
    
    <!-- 指定 MR 走的 shuffle -->
    <property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>

    <!-- 指定 ResourceManger 的地址 -->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
        <value>mitchell-102</value>
    </property>
    
    <!-- 指定 类路径 -->
    <property>
    	<name>yarn.application.classpath</name>   									
    	<value>/opt/module/hadoop/etc/hadoop:/opt/module/hadoop/share/hadoop/common/lib/*:/opt/module/hadoop/share/hadoop/common/*:/opt/module/hadoop/share/hadoop/hdfs:/opt/module/hadoop/share/hadoop/hdfs/lib/*:/opt/module/hadoop/share/hadoop/hdfs/*:/opt/module/hadoop/share/hadoop/mapreduce/*:/opt/module/hadoop/share/hadoop/yarn:/opt/module/hadoop/share/hadoop/yarn/lib/*:/opt/module/hadoop/share/hadoop/yarn/*</value>
    </property>
   
    <!-- 开启日志聚集功能 -->
    <property>
    	<name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    
    <!-- 日志聚集服务地址,注入到历史服务器 -->
    <property>
    	<name>yarn.log.server.url</name>
        <value>http://mitchell-101:19888/jobhistory/logs</value>
    </property>
    
    <!-- 日志的保留天数(单位秒) -->
    <property>
    	<name>yarn.log-aggregation-seconds</name>
        <value>604800</value>
    </property>
      
</configuration>

5.2.5. mapred 配置

vim mapred-site.xml 
<configuration>
    
    <!-- 指定 MR 程序运行在 yarn 上 -->
    <property>
    	<name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
    <!-- 历史服务器内部地址 -->
    <property>
    	<name>mapreduce.jobhistory.address</name>
        <value>mitchell-101:10020</value>
    </property>
    
    <!-- 历史服务器 WEB 地址 -->
    <property>
    	<name>mapreduce.jobhistory.webapp.address</name>
        <value>mitchell-101:19888</value>
    </property>
         
</configuration>

5.2.6. worker 配置

vim workers

# 加入以下内容
mitchell-101
mitchell-102
mitchell-103

5.2.7. 以上配置说明

由于 NameNode、YARN、2NN、JobHistory 四个组件都是比较耗内存的,所以我们一般讲他们分开安装到不同的服务器上

通过以上配置我们启动后 三台服务器分别存在的服务如下:

服务器服务1服务2服务3服务4
mitchell-101NameNodeJobHistoryServerDataNodeNodeManager
mitchell-102ResourceManager(YARN)DataNodeNodeManager
mitchell-103SecondaryNameNodeDataNodeNodeManager

5.2.8. 集群分发

将 haddop 以及修改的配置文件分发到其他机器

cd /opt/module/hadoop
mkdir data
cd ../
xsync.sh /opt/module/hadoop

5.3. 启动集群

5.3.1. 常用的启动命令

# 【101】初始化,只需要执行一次,后续可以直接启动
hdfs namenode -format

# 【101】启动 和 关闭 hdfs
start-dfs.sh
stop-dfs.sh
 
# 【102】启动 和 关闭 yarn
start-yarn.sh
stop-yarn.sh

# 【101】启动 和关闭 历史服务器
mapred --daemon start historyserver
mapred --daemon stop historyserver

hdfs web 访问地址:http://mitchell-101:9870/
yarn web 访问地址:http://mitchell-102:8088/

5.3.2. 启动脚本

如果用上方的命令启动集群,不管启动还是关闭每次都需要输入三个命令,不是很方便

我们可以创建一个脚本,封装集群的启动和关闭,方便操作

cd /home/mitchell/bin/
vim myhadoop.sh
chmod +x myhadoop.sh

脚本内容如下

#!/bin/bash

if [ $# -lt 1 ]
then
	echo "NO Args Input"
	exit;
fi

case $1 in
"start")
	echo "=============================== 启动 hadoop 集群 ==============================="
	
	echo "------------------------------- 启动 hdfs -------------------------------"
	ssh mitchell-101 "/opt/module/hadoop/sbin/start-dfs.sh"
	
	echo "------------------------------- 启动 yarn -------------------------------"
	ssh mitchell-102 "/opt/module/hadoop/sbin/start-yarn.sh"
	
	echo "------------------------------- 启动 historyserver -------------------------------"
	ssh mitchell-101 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")
	echo "=============================== 关闭 hadoop 集群 ==============================="

	echo "------------------------------- 关闭 historyserver -------------------------------"
	ssh mitchell-101 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
	
	echo "------------------------------- 关闭 yarn -------------------------------"
	ssh mitchell-102 "/opt/module/hadoop/sbin/stop-yarn.sh"
	
	echo "------------------------------- 关闭 hdfs -------------------------------"
	ssh mitchell-101 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
	echo "Input Args Error..."
;;
esac

5.3.4. 测试集群

先准备一个文件

cd /opt/module/hadoop
mkdir wcinput
cd wcinput
vim word.txt

# word.txt 文件中写入一些单词。如
haha hello name
nihao sima wo
haha cls
cks haha cls

文件上传到集群,并且做文件分析

# 创建文件夹:其中 /input 为相对于 hdfs 的文件路径
hadoop fs -mkdir /hadoop_input

# 上传文件:其中 wcinput/word.txt 磁盘下文件,/input 为上一步创建的相对 hsfs 的路径
# 我们在 word.txt 中写入一些单词,单词和单词之间用 空格隔开
hadoop fs -put wcinput/word.txt /hadoop_input

# 测试 MR
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount /hadoop_input /hadoop_output
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值