二、Hadoop搭建
一、Liunx环境准备
VMware+CentOS-7.6,
- 1.1下面是VMware和Centos的资源地址,也可以自己从网上下载相应的版本
百度网盘地址:链接:https://pan.baidu.com/s/1m_qvasgybY5rfJNHNjkqpw 提取码:9xka - 1.2安装Linux
- 1.3关闭Liunx防火墙
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
重启虚拟机(命令: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/
修改jdk的名字
[root@hdp-101 moude]mv jdk-8u141-linux-x64 jdk1.8.0_141
配置环境变量
[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
修改JAVA_HOME 路径:
export JAVA_HOME=/opt/module/jdk1.8.0_141
配置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
<!-- 指定HDFS副本的数量 单一节点至多设置一个副本-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- 3.2启动Hadoop
格式化NameNode(第一次启动时格式化,以后就不要总格式化)
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs namenode -format
启动NameNode
[root@hdp-101 hadoop-2.7.7]$ sbin/hadoop-daemon.sh start namenode
启动DataNode
[root@hdp-101 hadoop-2.7.7]$ sbin/hadoop-daemon.sh start datanode
- 3.3查看是否启动成功
[root@hdp-101 hadoop-2.7.7]$jps
13586 NameNode
13668 DataNode
13786 Jps
注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps
web端查看HDFS文件系统
http://hdp-101:50070/dfshealth.html#tab-overview
为什么不能一直格式化NameNode,格式化NameNode,要注意什么
[root@hdp-101 hadoop-2.7.7]$ cd data/tmp/dfs/name/current/
[root@hdp-101 current]$ cat VERSION
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
[root@hdp-101 hadoop-2.7.7]$ cd data/tmp/dfs/data/current/
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
- 3.4 基本操作
(a)在HDFS文件系统上创建一个input文件夹
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -mkdir -p /user/input
(b)将测试文件内容上传到文件系统上
[root@hdp-101 hadoop-2.7.7]$bin/hdfs dfs -put wcinput/wc.input
/user/input/
(c)查看上传的文件是否正确
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -ls /user/input/
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat /user/ input/wc.input
(d)运行MapReduce程序
[root@hdp-101 hadoop-2.7.7]$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input/ /user/output
(e)查看输出结果
命令行查看:
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat /user/output/*
查看output文件
(f)将测试文件内容下载到本地
[root@hdp-101 hadoop-2.7.7]$ hdfs dfs -get /user/root/output/part-r-00000 ./wcoutput/
(g)删除输出结果
[root@hdp-101 hadoop-2.7.7]$ hdfs dfs -rm -r /user/root/output
四、启动YARN
- 4.1配置YARN
(a)配置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
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-101</value>
</property>
(c)配置: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]$ vi mapred-site.xml
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 4.2启动YARN
(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start resourcemanager
(c)启动NodeManager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start nodemanager
- 4.3查看YARN浏览器页面查看
(a) 查看
http://hdp-101:8088/cluster
(b)删除文件系统上的output文件
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -rm -R /user/output
(c)执行MapReduce程序
[root@hdp-101 hadoop-2.7.7]$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input /user/output
(d)查看运行结果
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat /user/output/*
- 4.4配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
(a)配置mapred-site.xml
[root@hdp-101 hadoop]$ vi mapred-site.xml
在该文件里面增加如下配置。
<!-- 历史服务器端地址 -->
<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>
(b)启动历史服务器
[root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh start historyserver
(c)查看历史服务器是否启动
[root@hdp-101 hadoop-2.7.7]$ jps
(d)查看JobHistory
http://hdp-101:19888/jobhistory
- 4.5配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
开启日志聚集功能具体步骤如下:
(a)配置yarn-site.xml
[root@hdp-101 hadoop]$ vi 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>
(b)关闭NodeManager 、ResourceManager和HistoryManager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh stop resourcemanager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh stop nodemanager
[root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh stop historyserver
(c)启动NodeManager 、ResourceManager和HistoryManager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start resourcemanager
[root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start nodemanager
[root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh start historyserver
(d)删除HDFS上已经存在的输出文件
[root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -rm -R /user/output
(e)执行WordCount程序
[root@hdp-101 hadoop-2.7.7]$ hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input /user/output
(f)查看日志
http://hdp-101:19888/jobhistory
五、配置文件的说明
- Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性
要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
---|---|
[core-default.xml] | hadoop-common-2.7.7.jar/ core-default.xml |
[hdfs-default.xml] | hadoop-hdfs-2.7.7.jar/ hdfs-default.xml |
[yarn-default.xml] | hadoop-yarn-common-2.7.7.jar/ yarn-default.xml |
[mapred-default.xml] | hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml |
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置 |