Hadoop分布式搭建

Posted hziwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop分布式搭建相关的知识,希望对你有一定的参考价值。

一、Liunx环境准备

VMware+CentOS-7.6,

systemctl stop firewalld	关闭防火墙
systemctl disable firewalld	禁止开机启动
systemctl status firewalld	查看防火墙状态
  • 1.4设置静态IP(并配置虚拟网络环境)
    修改配置文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

改成以下模板

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  # 修改
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=79acf3f7-0d64-4244-b531-daffc9c8e771
DEVICE=ens33
ONBOOT=yes  # 修改
# 新增
IPADDR=192.168.244.101
NETMASK=255.255.255.0
GATEWAY=192.168.244.2
DNS1=114.114.114.114
DNS2=8.8.8.8

重启网络服务

[root@localhost ~]# service network restart
  • 1.5 安装常用工具
vim	编辑工具		yum -y install vim*
wget 云端下载		yum -y install wget
  • 1.6 修改主机名
    查看主机名
[root@localhost ~]# echo $HOSTNAME

修改主机名

[root@localhost ~]# vim /etc/sysconfig/network
增加以下内容,以后只需要更改 HOSTNAME 那一行
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hdp-101	
注意:主机名称中不能有“_”下划线

增加ip和主机的映射关系

[root@localhost ~]# vim /etc/hosts
增加以下内容
192.168.244.101 hdp-101
192.168.244.102 hdp-102
192.168.244.103 hdp-103

重启虚拟机(命令:reboot),主机名生效

测试 ping hdp-101
ping 通代表修改成功
  • 1.7在/opt目录下创建两个文件夹module和software
[root@hdp-101 ~]# mkdir /opt/module /opt/sofaware

到此基础配置已完成,其他两台也要配置好,再开始下面的配置,要不然会找不到主机

二、Hadoop运行环境搭建

  • 2.1安装jdk、Hadoop
    进入到 /opt/sofaware/目录下
[root@hdp-101 ~]# cd /opt/sofaware/
[root@hdp-101 sofaware]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
[root@hdp-101 sofaware]# wget http://mirrors.hust.edu.cn/apache/hadoop/core/hadoop-2.7.7/hadoop-2.7.7.tar.gz
[root@hdp-101 sofaware]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
[root@hdp-101 sofaware]# tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module/
[root@hdp-101 sofaware]# cd /opt/moude/

配置环境变量

[root@hdp-101 sofaware]# sudo vi /etc/profile
在文件末尾添加jdk路径和hadoop路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
保存、退出,让修改后的文件生效
[root@hdp-101 sofaware]# source /etc/profile
测试环境变量是否配置成功
[root@hdp-101 sofaware]# java -version
java version "1.8.0_141"

[root@hdp-101 sofaware]# hadoop version
Hadoop 2.7.7
  • 2.2Hadoop目录结构
    查看Hadoop目录结构
[root@hdp-101 ~]$ cd /opt/module/hadoop-2.7.7
[root@hdp-101 hadoop-2.7.7]# ll
总用量 52
drwxr-xr-x. 2 root root  4096 5月  22 2017 bin
drwxr-xr-x. 3 root root  4096 5月  22 2017 etc
drwxr-xr-x. 2 root root  4096 5月  22 2017 include
drwxr-xr-x. 3 root root  4096 5月  22 2017 lib
drwxr-xr-x. 2 root root  4096 5月  22 2017 libexec
-rw-r--r--. 1 root root  15429 5月  22 2017 LICENSE.txt
-rw-r--r--. 1 root root   101 5月  22 2017 NOTICE.txt
-rw-r--r--. 1 root root  1366 5月  22 2017 README.txt
drwxr-xr-x. 2 root root  4096 5月  22 2017 sbin
drwxr-xr-x. 4 root root  4096 5月  22 2017 share

重要目录
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

三、Hadoop运行模式

  • 3.1开始配置Hadoop
[root@hdp-102 hadoop-2.7.7]# cd etc/hadoop/
配置:hadoop-env.sh
vim hadoop-env.sh
修改JAVA_HOME 路径:
export JAVA_HOME=/opt/module/jdk1.8.0_141

配置core-site.xml
vim core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hdp-101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.7/data/tmp</value>
</property>

配置hdfs-site.xml
vim hdfs-site.xml

<!-- 指定HDFS副本的数量 单一节点至多设置一个副本-->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hdp-102:50090</value>
</property>

四、配置YARN

  • 4.1配置YARN
    (a)配置yarn-env.sh
    vim yarn-env.sh

找到以下
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
取消注释并配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_141

(b)配置yarn-site.xml
vim yarn-site.xml

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

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

(c)配置:mapred-env.sh
vim mapred-env.sh

配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_141

(d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml

[root@hdp-101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
[root@hdp-101 hadoop]$ vim mapred-site.xml

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

<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hdp-101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hdp-101:19888</value>
</property>

五、配置SSH免密登录

  • 5.1生成公钥和私钥
[root@hdp-101 ~]# ssh-keygen -t rsa

  • 5.2将公钥拷贝到要免密登录的目标机器上
[root@hdp-101 ~]# cd .ssh/
[root@hdp-101 .ssh]# ssh-copy-id hdp-101
[root@hdp-101 .ssh]# ssh-copy-id hdp-102
[root@hdp-101 .ssh]# ssh-copy-id hdp-103

六、群起集群

  • 6.1配置slaves
/opt/module/hadoop-2.7.7/etc/hadoop/slaves
[root@hdp-101 hadoop]# vim slaves
在该文件中增加如下内容:
hdp-101
hdp-102
hdp-103

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
  • 6.2 同步所有节点配置
    安装rsync远程同步工具,其他机器上也要安装rsync,不然无法执行
yum install rsync -y
rsync -av /opt/module/ hdp-101:/opt/module/
rsync -av /opt/module/ hdp-102:/opt/module/

复制配置文件

rsync -av /etc/profile hdp-101:/etc/profile
rsync -av /etc/profile hdp-102:/etc/profile

在相应的主机上使配置文件生效

source /etc/profile
  • 6.3启动集群
    (a)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[root@hdp-101 hadoop-2.7.7]# bin/hdfs namenode -format

(b))启动HDFS http://hdp-101:50070/dfshealth.html#tab-datanode
在windows上访问需要做ip和网址的配置,在C:\\Windows\\System32\\drivers\\etc\\hosts上添加
192.168.160.101 hdp-101
也可以直接用ip请求 http://192.168.160.101:50070/dfshealth.html#tab-datanode

[root@hdp-101 hadoop-2.7.7]# sbin/start-dfs.sh
[root@hdp-101 hadoop-2.7.7]# jps
4166 NameNode
4482 Jps
4263 DataNode

(c)启动YARN http://hdp-103:8088/cluster/nodes

[root@hadoop103 hadoop-2.7.7]# sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。


(d)启动历史服务器 http://hdp-101:19888/jobhistory

[root@hdp-101 hadoop-2.7.7]# sbin/mr-jobhistory-daemon.sh start historyserver
[root@hdp-101 hadoop-2.7.7]# jps

七、集群启动/停止方式总结

  • 7.1各个服务组件逐一启动/停止
分别启动/停止HDFS组件
hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode
启动/停止YARN
yarn-daemon.sh  start / stop  resourcemanager / nodemanager
  • 7.2各个模块分开启动/停止
整体启动/停止HDFS
start-dfs.sh   /  stop-dfs.sh
整体启动/停止YARN
start-yarn.sh  /  stop-yarn.sh

八、HDFS常见命令

创建一个文件夹    hdfs dfs -mkdir /myTask
创建多个文件夹    hdfs dfs -mkdir -p /myTask1/input1
上传文件 hdfs dfs -put /opt/wordcount.txt /myTask/input
查看总目录下的文件和文件夹 hdfs dfs -ls /
查看myTask下的文件和文件夹 hdfs dfs -ls /myTask
查看myTask下的wordcount.txt的内容 hdfs dfs -cat /myTask/wordcount.txt
删除总目录下的myTask2文件夹以及里面的文件和文件夹 hdfs dfs -rmr /myTask2
删除myTask下的wordcount.txt hdfs dfs -rmr /myTask/wordcount.txt
下载hdfs中myTask/input/wordcount.txt到本地opt文件夹中 hdfs dfs -get /myTask/input/wordcount.txt /opt

以上是关于Hadoop分布式搭建的主要内容,如果未能解决你的问题,请参考以下文章

基于CentOS的Hadoop分布式环境的搭建——你要知道自己到底该做哪些事儿

Hadoop - Hadoop伪分布式搭建

求助hadoop2.X分布式搭建两个NameNode均无法正常启动

Hadoop分布式搭建

hadoop2.7.3伪分布式环境搭建详细安装过程

Hadoop学习搭建Hadoop的分布式集群