Hadoop分布式环境搭建(通用型)

目录

hadoop全分布式环境搭建

0. 环境介绍

1. 角色介绍

2. 环境准备

2.0 主机环境:

2.1 网络配置(用root操作):

2.2 关闭防火墙(用root操作)

2.3 hadoop运行环境准备(用hadoop用户操作)

3. hadoop集群相关xml配置

4. 初始化文件系统与测试

5. 运行一个测试用例


hadoop全分布式环境搭建

0. 环境介绍

CentOS7.4 + hadoop-2.7.6 + jdk1.8

1. 角色介绍

主机0: master ==> NameNode,SecondaryNameNode,ResourceManager

主机1-3: slave{1,2,3} ==> DataNode, NodeManager

 

2. 环境准备

2.0 主机环境:

只需要准备一台主机0: master, 配置好之后克隆三台即可,以下操作均在master上,创建一个用户hadoop用户,hadoop环境均安装到hadoop用户家目录下;

2.1 网络配置(用root操作):

这里可以采用桥接或者NAT或者HOST_ONLY,需要固定IP,我这里采用HOST_ONLY模式,四台机器都在VMNET1下;(具体IP无所谓,但是需要四台机器在同一个网段能通信)

(1) 在/etc/hosts中配置好映射关系:

[hadoop@master data]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.10.20.60 master
10.10.20.61 slave1
10.10.20.62 slave2
10.10.20.63 slave3

(2) systemctl set-hostname master # 设置主机名

2.2 关闭防火墙(用root操作)

systemctl stop firewalld; systemctl disable firewalld;

2.3 hadoop运行环境准备(用hadoop用户操作)

在/home/hadoop/ #家目录下

(1) 创建环境文件夹

mkdir app software; # app 存放安装的软件 software存放压缩包 mkdir app/tmp; # hdfs的文件数据存放

(2) 上传相关软件包到 software目录下

[hadoop@master ~]$ cd software/
[hadoop@master software]$ ls
hadoop-2.7.6.tar.gz  jdk-8u151-linux-x64.tar.gz

 

 

(3) 解压软件到app目录:

tar xvf jdk-8u151-linux-x64.tar.gz -C../app/

tar xvf hadoop-2.7.6.tar.gz -C../app/

(4) 配置环境变量JAVA_HOME,HADOOP_HOME

vim ~/.bash_profile   添加如下字段

JAVA_HOME=/home/hadoop/app/jdk1.8.0_151
HADOOP_HOME=/home/hadoop/app/hadoop-2.7.6
PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
export PATH

(5) 测试配置

source ~/.bash_profile

java -version #查看java版本

hadoop version #查看hadoop版本

结果如下: 

[hadoop@master software]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
[hadoop@master software]$ hadoop version
Hadoop 2.7.6
Subversion https://[email protected]/repos/asf/hadoop.git -r 085099c66cf28be31604560c376fa282e69282b8
Compiled by kshvachk on 2018-04-18T01:33Z
Compiled with protoc 2.5.0
From source with checksum 71e2695531cb3360ab74598755d036
This command was run using /home/hadoop/app/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar
[hadoop@master software]$ 

(6) 如果hadoop version显示JAVA_HOME不存在,则需要在hadoop=env.sh中配置JAVA_HOME

vim ~/app/hadoop/hadoop-2.7.6/etc/hadoop/hadoop-env.sh 

#--- 在hadoop-env.sh中
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_151

配置好后hadoop version可用

 

3. hadoop集群相关xml配置

# 进入到配置文件所在的文件夹
cd ~/app/hadoop/hadoop-2.7.6/etc/hadoop/

cat hdfs-site.xml
#-----------------------------------------

        
                dfs.replication
                2
        

#--------------------------------------------

cat core-site.xml
#-----------------------------------------

        
                fs.defaultFS
                hdfs://master:9000
        
        
                io.file.buffer.size
                131072
        
        
                hadoop.tmp.dir
                /home/hadoop/app/tmp
        
        

#-----------------------------------------

cat yarn-site.xml 
#-----------------------------------------

        
                yarn.resourcemanager.hostname
                master
        
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        


#-----------------------------------------

cat mapred-site.xml
#-----------------------------------------

        
                mapreduce.framework.name
                yarn
        

#-----------------------------------------

cat slaves
#-----------------------------------------
slave1
slave2
slave3
#-----------------------------------------


(7) 配置完上述五个文件后,OK,可以开始克隆虚拟机了;

克隆完成后,按照前文约定修改每台机器的IP以及主机名(用root用户操作)

 

[hadoop@master data]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.10.20.60 master
10.10.20.61 slave1
10.10.20.62 slave2
10.10.20.63 slave3

这里我使用nmtui命令修改IP,使用hostnamectl 修改主机名

4. 初始化文件系统与测试

(1) 确保四台机器能相互通信上之后,做免密登陆处理

在master机器上用hadoop用户登陆操作:

ssh-keygen # 此处连续回车到结束 # 拷贝公钥到从机上, 过程中需要输入yes和密码

ssh-copy-id slave1 

ssh-copy-id slave2 

ssh-copy-id slave3

(2) 在master机器上格式化并启动集群

# 初始化文件系统,注意不要多次格式化 
hadoop namenode -format 
# 启动集群 
# 启动DataNode NameNode SecondaryNameNode 

$HADOOP_HOME/sbin/start-dfs.sh
 
# 启动ResourceManager,NodeManager

$HADOOP_HOME/sbin/start-yarn.sh

 

上述步骤如果出错需要去根据打印查看日志信息

查看数据:

Master机器上

[hadoop@master hadoop]$ jps
80329 Jps
8121 NameNode
8618 SecondaryNameNode
8940 ResourceManager

slave1机器上

[hadoop@slave1 ~]$ jps
75050 Jps
2540 NodeManager
1949 DataNode

slave2,slave3的信息同slave1

 

5. 运行一个测试用例

# 1. 先写词频统计源文件
cat test.txt
#------
hello world hello
hello BigData Hadoop
#------

# 2. 文件从本地拷贝到HDFS上
hadoop fs -put test.txt /

# 3. 运行词频统计任务
hadoop jar ~/app/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /test.txt /output/wc
# 4. 最后去output下查看运行结果
hadoop fs -ls /output/

 

 

 

你可能感兴趣的:(Hadoop)