Linux安装Hadoop
安装和配置hadoop伪分布式运行模式
一、Hadoop运行环境搭建
1.1虚拟机环境准备
更改主机名:
[root@hadoop02 hadoop]# hostnamectl set-hostname hadoop02
[root@hadoop02 hadoop]# vi /etc/hosts
#输入:
192.168.136.36 hadoop02
在根目录下先创建一个software目录,用来放置安装包:
[root@hadoop02 /]# mkdir software
安装包:
链接: https://pan.baidu.com/s/1QOHTy3VkT-vxYNgjiZdsRw
提取码: 21fp
把9个安装包拖进来:
1.2 安装jdk1.8(若已安装则忽略这步)
解压jdk到根目录下的opt目录下:
[root@hadoop02 software]# tar -zvxf jdk-8u221-linux-x64.tar.gz -C /opt/
改名为java8:
[root@hadoop02 opt]# mv jdk-8u221-linux-x64 java8
配置jdk环境变量
vim /etc/profile
export JAVA_HOME=/opt/java8
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$JAVA_HOME/bin:$PATH
保存后退出
手动生效环境变量
source /etc/profile
验证jdk是否安装成功
java -version
1.3 安装Hadoop
解压hadoop-2.6.0-cdh5.14.2.tar.gz到opt目录下:
[root@hadoop02 software]# tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/
把hadoop-2.6.0-cdh5.14.2名字更改为hadoop
[root@hadoop02 opt]# mv hadoop-2.6.0-cdh5.14.2/ hadoop
配置Hadoop环境变量:
[root@hadoop02 opt]# vi /etc/profile
输入:
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
保存退出,使环境变量生效:
[root@hadoop02 opt]# source /etc/profile
验证hadoop是否安装成功:
[root@hadoop02 opt]# hadoop version
二、Hadoop运行模式
Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
Hadoop 官方网站:http://hadoop.apache.org/
2.1 本地运行模式
以官方wordcount案例为准
进入hadoop安装目录后新建wcinput文件夹
mkdir wcinput
进入wcinput文件夹,新建wc.input文件
cd wcinput
touch wc.input
编辑wc.input
vim wc.input
输入以下内容
hadoop yarn spark
hadoop mapreduce
hadoop spark
hadoop spark
回到Hadoop安装目录后执行程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount wcinput wcoutput
查看结果
cat wcoutput/part-r-00000
hadoop 4
mapreduce 1
spark 3
yarn 1
2.2 伪分布式运行模式
2.2.1 启动HDFS 并运行 MapReduce 程序
1)任务:
(1)配置集群
(2)启动、测试集群增、删、查
(3)执行 wordcount 案例
2)执行步骤
(1) 配置集群
进入根目录下的opt目录下的hadoop下的目录下的hadoop:
[root@hadoop02 opt]# cd /opt/hadoop/etc/hadoop
配置hadoop-env.sh:
[root@hadoop02 hadoop]# vi hadoop-env.sh
在export JAVA_HOME=${JAVA_HOME}下输入:
export JAVA_HOME=/opt/java8
注意:后面的是你java安装的目录
配置core-site.xml:
[root@hadoop02 hadoop]# vi core-site.xml
在两个configuration之间输入:
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.136.36:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
注意:hdfs后面输入的是你的主机ip,后面的9000是端口号
保存退出,配置hdfs-site.xml:
[root@hadoop02 hadoop]# vi hdfs-site.xml
在两个configuration之间输入:
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(2)启动集群
(a)格式化 NameNode(第一次启动时格式化,以后就不要总格式化)
[root@hadoop02 hadoop]$ bin/hdfs namenode -format
(b)启动 NameNode
[root@hadoop02 hadoop]$ sbin/hadoop-daemon.sh start namenode
(c)启动 DataNode
[root@hadoop02 hadoop]$ sbin/hadoop-daemon.sh start datanode
(3)查看集群
(a)查看是否启动成功
[root@hadoop02 hadoop]$ jps
12586 NameNode
12668 DataNode
12666 Jps
(b)查看产生的 log 日志
当前目录:Hadoop安装目录
[root@hadoop02 hadoop] cd logs
[root@hadoop02 logs]$ ls
(c)web 端查看 HDFS 文件系统(或者换成 ip:50070)
http://hadoop02:50070/
注意:如果不能查看,请检查防火墙是否关闭,windows 操作系统是否配置了 hadoop101 和虚拟机 ip 的映射
(4)操作集群
(a)在 hdfs 文件系统上 创建一个 input 文件夹
[root@hadoop02 hadoop]$ bin/hdfs dfs -mkdir -p /user/hadoop/input
(b)将测试文件内容 上传到文件系统上
[root@hadoop02 hadoop]$ bin/hdfs dfs -put wcinput/wc.input /user/hadoop/input/
(c) 查看上传的文件是否正确
[root@hadoop02 hadoop]$ bin/hdfs dfs -ls /user/hadoop/input/
[root@hadoop02 hadoop]$ bin/hdfs dfs -cat /user/hadoop/input/wc.input
(d)运行 mapreduce 程序
[root@hadoop02 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /user/hadoop/input/ /user/hadoop/output
(e)查看输出结果
命令行查看:
[root@hadoop02 hadoop]$ bin/hdfs dfs -cat /user/hadoop/output/*
也可以在浏览器上进行查看
(f)将测试文件内容 下载到本地
[root@hadoop02 hadoop]$ bin/hdfs dfs -get /user/hadoop/ output/part-r-00000 ./wcoutput/
(g) 删除输出结果
[root@hadoop02 hadoop]$ bin/hdfs dfs -rm -r /user/hadoop/output
2.2.2 YARN 上运行 MapReduce 程序
1)任务:
(1)配置集群任务在 yarn 上运行
(2)在 yarn 上执行 wordcount 案例
2)执行步骤
(1)配置集群
cd /opt/hadoop/etc/hadoop
a.配置yarn-env.sh
[root@hadoop02 hadoop]# vi yarn-env.sh
export JAVA_HOME=/opt/java8
b.配置yarn-site.xml:
[root@hadoop02 hadoop]# vi yarn-site.xml
在两个configuration中输入:
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
c.配置 mapred-env.sh
vim mapred-env.sh
export JAVA_HOME=/opt/java8
d.配置mapred-site.xml
复制mapred-site.xml.template
[root@hadoop02 hadoop]# cp mapred-site.xml.template mapred-site.xml
配置mapred-site.xml:
[root@hadoop02 hadoop]# vi mapred-site.xml
在两个configuration中输入:
<!-- 指定 mr 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(2)启动集群
(a)启动前必须保证 namenode 和 datanode 已经启动
(b)启动 resourcemanager
[root@hadoop02 hadoop]$ /sbin/yarn-daemon.sh start resourcemanager
(c)启动 nodemanager
[root@hadoop02 hadoop]$ sbin/yarn-daemon.sh start nodemanager
(3)集群操作
(a)yarn 的浏览器页面查看,yarn 的 web ui 端口为 8088
http://hadoop02:8088/cluster
(b)删除文件系统上的 output 文件
[root@hadoop02 hadoop]$ bin/hdfs dfs -rm -r /user/hadoop/output
(c)执行 mapreduce 程序
[root@hadoop02 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /user/hadoop/input /user/hadoop/output
(d)查看运行结果
[root@hadoop02 hadoop]$ bin/hdfs dfs -cat /user/hadoop/output/*
2.2.3 配置历史服务器
配置历史服务器可以查看 MapReduce 任务的详情信息,查看日志,定
位错误
步骤如下:
1)配置 mapred-site.xml
[root@hadoop02 hadoop]# vi mapred-site.xml
在两个Configuration中添加:
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.136.36:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.136.36:19888</value>
</property>
2)启动历史服务器
[root@hadoop02 hadoop]$ sbin/mr-jobhistory-daemon.sh start historyserver
3)查看历史服务器是否启动
[root@hadoop02 hadoop]$ jps
4)查看 jobhistory
http://hadoop02:19888/jobhistory
2.2.4 配置日志的聚集
日志聚集概念:应用运行完成以后,将日志信息上传到 HDFS 系统上。方便查看
开启日志聚集功能步骤:
(1)配置yarn-site.xml:
[root@hadoop02 hadoop]# vi yarn-site.xml
在两个Configuration中添加:
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
(2)关闭 nodemanager 、resourcemanager 和 historymanager
[root@hadoop02 hadoop]$ sbin/yarn-daemon.sh stop resourcemanager
[root@hadoop02 hadoop]$ sbin/yarn-daemon.sh stop nodemanager
[root@hadoop02 hadoop]$ sbin/mr-jobhistory-daemon.sh stop historyserver
(3)启动 nodemanager 、resourcemanager 和 historymanager
[root@hadoop02 hadoop]$ sbin/yarn-daemon.sh start resourcemanager
[root@hadoop02 hadoop]$ sbin/yarn-daemon.sh start nodemanager
[root@hadoop02 hadoop]$ sbin/mr-jobhistory-daemon.sh start historyserver
(4)测试:删除 hdfs 上已经存在的 hdfs 文件
[root@hadoop02 hadoop]$ bin/hdfs dfs -rm -r /user/hadoop/output
(5)执行 wordcount 程序
[root@hadoop02 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /user/hadoop/input /user/hadoop/output
(6)查看日志
http://hadoop02:19888/jobhistory
2.2.5 配置文件说明
Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改
某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:存放在 hadoop 相应的 jar 包中
[core-default.xml]
hadoop-common-.jar/ core-default.xml
[hdfs-default.xml]
hadoop-hdfs-.jar/ hdfs-default.xml
[yarn-default.xml]
hadoop-yarn-common-.jar/ yarn-default.xml
[mapred-default.xml]
hadoop-mapreduce-client-core-.jar/ mapred-default.xml
(2)自定义配置文件:存放在$HADOOP_HOME/etc/hadoop
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml