Hadoop分布式集群云环境搭建

本篇文章主要记录Hadoop分布式集群环境的搭建过程

环境:4台云主机  系统:Centos7.6(64位)主机配置:内存4G+硬盘40G

           Java版本:java-1.8.0-openjdk   Hadoop版本:2.8.5

主机规划

  masterslave1slave2slave3
NameNode   
SecondaryNameNode   
DataNode 

注意:1. 尽量使用相同版本的Hadoop,本教程亲测对Hadoop 2.7.7与Hadoop 2.8.5版本有效。

 2. 配置过程不易,配置好每步都要进行验证,以确保最后配置成功。

 

目录

本篇文章主要记录Hadoop分布式集群环境的搭建过程

一.准备工作

1.创建Hadoop用户

2.修改Hostname和配置Host文件

3.配置SSH免密钥登录

4.安装并配置Java环境

二.Hadoop安装与配置

1.Hadoop下载和安装

2.运行Hadoop

3.执行分布式实例


一.准备工作

1.创建Hadoop用户

在root用户下创建新用户hadoop。

useradd -m hadoop -s /bin/bash   # 创建新用户hadoop

修改hadoop用户密码。

passwd hadoop

为hadoop用户设置管理员权限,方便后面配置。

visudo

找到第98行,按Esc键后输入:98来到第98行。添加一行文本,内容如下图所示(空格为tab键),保存退出。

2.修改Hostname和配置Host文件

退出root用户,用新创建的hadoop用户登录。修改Hostname,方便后面配置。

hostname  # 查看主机名
sudo hostnamectl set-hostname <newhostname>  # 修改主机名

修改完成后重新登录,发现主机名已经改变。

查看主机ip地址,配置 /etc/hosts文件。

ifconfig  # 查看主机ip地址
cd ../..  # 切换到根目录 
sudo vi /etc/hosts  # 配置/etc/hosts文件

配置格式如下。

# 格式

Ip address1   hostname1
Ip address2   hostname2
Ip address3   hostname3

# 举例

10.xx.xx.xxx	master
10.xx.xx.xxx	slave1	
10.xx.xx.xxx	slave2
10.xx.xx.xxx	slave3

保存退出后检查配置结果,主机间相互ping通即可。

ping -c 3 主机名

3.配置SSH免密钥登录

输入命令,默认回车,生成密钥。

ssh-keygen -t rsa 

配置不同主机间免密钥登录(每个主机都要配置)。

# 配置命令

ssh-copy-id 用户名@主机名

# 举例

ssh-copy-id hadoop@master
ssh-copy-id hadoop@slave1
ssh-copy-id hadoop@slave2
ssh-copy-id hadoop@slave3

配置完成后进行验证。

# ssh链接命令

ssh 主机名

# 成功状态

Last login: Sun May  3 03:29:39 2020 from master

4.安装并配置Java环境

安装jdk。

# 安装命令

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

# 安装成功状态

Complete!

配置Java环境。

vi ~/.bashrc  # 编辑文件

# 在文件中最后一行添加文本,保存退出

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 

source ~/.bashrc  # 使变量设置生效

依次输入三行命令验证Java环境。

# 验证命令(依次输入)

echo $JAVA_HOME  # 检验变量值
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

# 成功状态(依次)

/usr/lib/jvm/java-1.8.0-openjdk

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

二.Hadoop安装与配置

1.Hadoop下载和安装

配置Hadoop前,确保前面SSH免密配置、Java环境配置无误。

Hadoop主要的配置工作在master(主节点)上完成。

下载Hadoop。

# 安装wget

sudo yum install wget 

# 下载hadoop

wget  http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

解压Hadoop。

# 将hadoop解压到/usr/local

sudo tar -zxf ~/hadoop-2.8.5.tar.gz -C /usr/local  

# 进入目录

cd /usr/local/          

# 将文件夹名改为hadoop  
                  
sudo mv ./hadoop-2.8.5/ ./hadoop  

# 修改文件夹用户从属     
     
sudo chown -R hadoop:hadoop ./hadoop        

# 检查hadoop是否可用

./hadoop/bin/hadoop version

# 正常结果

[hadoop@master local]$ ./hadoop/bin/hadoop version
Hadoop 2.8.5
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 0b8464d75227fcee2c6e7f2410377b3d53d3d5f8
Compiled by jdu on 2018-09-10T03:32Z
Compiled with protoc 2.5.0
From source with checksum 9942ca5c745417c14e318835f420733
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.5.jar

添加Hadoop环境变量。

sudo vi ~/.bashrc

# Hadoop环境

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

# 编译环境

source ~/.bashrc 


set  # 查看当前环境变量      

# 结果

GROUPS=()
HADOOP_COMMON_HOME=/usr/local/hadoop
HADOOP_COMMON_LIB_NATIVE_DIR=/usr/local/hadoop/lib/native
HADOOP_HDFS_HOME=/usr/local/hadoop
HADOOP_HOME=/usr/local/hadoop
HADOOP_INSTALL=/usr/local/hadoop
HADOOP_MAPRED_HOME=/usr/local/hadoop   

Hadoop分布式集群环境配置。

cd  /usr/local/hadoop/etc/hadoop  # 进入目录

对下列文件进行配置(主机名称自行替换)

1.core-site.xml

更改配置为:

    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://master:9000</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/usr/local/hadoop/tmp</value>
                    <description>Abase for other temporary directories.</description>
            </property>
    </configuration>


2.hdfs-site.xml

更改配置为:

    <configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>slave1:50090</value>       //第二节点地址 
            </property>
            <property>
                    <name>dfs.replication</name>
                    <value>3</value>                  //slave主机数,通常为奇数
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
            </property>
    </configuration>


3.mapred-site.xml

 mv ./mapred-site.xml.template ./mapred-site.xml    # 重命名

更改配置为:

    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>master:10020</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>master:19888</value>
            </property>
    </configuration>


4.yarn-site.xml

更改配置为:

    <configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>master</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    </configuration>


5.修改文件slaves

添加slave主机名称

# 举例

slave1
slave2
slave3

Hadoop配置完成后将master 上的 /usr/local/hadoop 文件夹复制到各个节点上,在各个slave节点上解压。

tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩方便复制
cd ~
scp ./hadoop.master.tar.gz slave1:/home/hadoop  # 将文件发送到各个节点

登录各个slave节点,执行下面操作。

sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local  # 解压
sudo chown -R hadoop /usr/local/hadoop              # 修改权限

2.运行Hadoop

全部配置完成后回到master主机,执行以下命令。

hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

# 成功状态

20/05/18 10:56:48 INFO common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted.
20/05/18 10:56:48 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
20/05/18 10:56:48 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 323 bytes saved in 0 seconds.
20/05/18 10:56:48 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
20/05/18 10:56:48 INFO util.ExitUtil: Exiting with status 0
20/05/18 10:56:48 INFO namenode.NameNode: SHUTDOWN_MSG: 

# 输出日志无报错信息后依次执行

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

# 使用jps查看节点启动进程

jps

# 正常状态(master)

20737 ResourceManager
21073 Jps
21019 JobHistoryServer
20462 NameNode

# 正常状态(slave1)

22080 NodeManager
22227 Jps
21902 DataNode
21999 SecondaryNameNode

# 正常状态(slave2,slave3)
22088 NodeManager
21979 DataNode
22251 Jps


# 通过hdfs dfsadmin -report命令查看进程是否正确启动

hdfs dfsadmin -report

# 结果

Configured Capacity: 128814354432 (119.97 GB)
Present Capacity: 122205069312 (113.81 GB)
DFS Remaining: 122205057024 (113.81 GB)
DFS Used: 12288 (12 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0

-------------------------------------------------
Live datanodes (3):

3.执行分布式实例

hdfs dfs -mkdir -p /user/hadoop  # 创建hdfs目录

# 将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中

hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

# 执行mapreduce作业

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

 运行过程和结果如下图所示。如果长时间没有反应,则应检查配置是否存在问题。

 如果运行结果正确,Hadoop分布式集群环境搭建成功。如果出现错误,应检查配置文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值