二、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

重启虚拟机(命令: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
[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这个路径上,用户可以根据项目需求重新进行修改配置
posted @ 2020-04-27 20:28  hziwei  阅读(266)  评论(0编辑  收藏  举报