伪分布式模式安装hadoop集群
一、创建hadoop用户
二、解压Hadoop目录文件
三、配置Hadoop
四、配置、格式化、启动HDFS
五、配置、启动YARN
六、运行MapReduce Job
七、停止Hadoop
八、开启历史服务
九、开启日志聚集
一.创建hadoop用户
1.创建hadoop用户
useradd hadoop
passwd hadoop
2、 给hadoop用户sudo权限
vim /etc/sudoers
设置权限,学习环境可以将hadoop用户的权限设置的大一些,但是生产环境一定要注意普通用户的权限限制。
将下面的内容加到sudoers文件中
root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL
3、 切换到hadoop用户
su - hadoop
4、 创建存放hadoop文件的目录
sudo mkdir /opt/modules
5、 将hadoop文件夹的所有者指定为hadoop用户
如果存放hadoop的目录的所有者不是hadoop,之后hadoop运行中可能会有权限问题,那么就讲所有者改为hadoop。
sudo chown -R hadoop:hadoop /opt/modules
二.解压Hadoop目录文件
1、 复制hadoop-2.6.0-cdh5.7.0.tar.gz到/opt/modules目录下
2、 解压hadoop-2.6.0-cdh5.7.0.tar.gz tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz
三.配置Hadoop
1、 配置Hadoop环境变量 vim /etc/profile
追加配置:
export HADOOP_HOME="/opt/modules/hadoop-2.6.0-cdh5.7.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行:source /etc/profile 使得配置生效
验证HADOOP_HOME参数: echo $HADOOP_HOME
2、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME参数为: export JAVA_HOME="/opt/modules/jdk1.7.0_67"
3、 配置core-site.xml (只用配置这两个标签,别的不用修改)
vi ${HADOOP_HOME}/etc/hadoop/core-site.xml
(1) fs.defaultFS参数配置的是HDFS的地址
<property>
<name>fs.defaultFS</name>
<value>hdfs://address-01:9000</value>
</property>
(2) hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。
默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
创建临时目录:mkdir -p /opt/data/tmp
将临时目录的所有者修改为hadoop sudo chown –R hadoop:hadoop /opt/data/tmp
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
四.配置、格式化、启动HDFS
1、 配置hdfs-site.xml (只用配置这一
个标签,别的不用修改)
vi ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
2、 格式化HDFS
${HADOOP_HOME}/bin/ 目录下面 ./hdfs namenode –format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:
1.格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/opt/data的所有者改为hadoop。
sudo chown -R hadoop:hadoop /opt/data
2.查看NameNode格式化后的目录。
ll /opt/data/tmp/dfs/name/current
fsimage是NameNode元数据在内存满了后,持久化保存到的文件。
fsimage*.md5 是校验文件,用于校验fsimage的完整性。
seen_txid 是hadoop的版本
vession文件里保存:
namespaceID:NameNode的唯一ID。
clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群。
3、 启动NameNode ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
4、 启动DataNode ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
5、 启动SecondaryNameNode ${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
6、 JPS命令查看是否已经启动成功,有结果就是启动成功了。
7、 HDFS上测试创建目录、上传、下载文件(如果配置了hadoop环境变量可以在任何目录下面执行hdfs操作的命令)
HDFS上创建目录 hdfs dfs -mkdir /demo1
上传本地文件到HDFS上 hdfs dfs -put ${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1
读取HDFS上的文件内容 hdfs dfs -cat /demo1/core-site.xml
从HDFS上下载文件到本地 hdfs dfs -get /demo1/core-site.xml
五、配置、启动YARN
1、 配置mapred-site.xml
默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
添加配置如下: (指定mapreduce运行在yarn框架上。)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2、 配置yarn-site.xml
添加配置如下:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>address-01</value>
</property>
yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
-
yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。
3、 启动Resourcemanager ${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager
4、 启动nodemanager ${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager
5 、查看启动的进程
6、 YARN的Web页面 YARN的Web客户端端口号是8088,通过http://address-01:8088/可以查看。
六.运行MapReduce Job
在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在 ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。
1、 创建测试用的Input文件
bin/hdfs dfs -mkdir -p /wordcountdemo/input
在本地/opt/data目录创建一个文件wc.input,内容如下
将wc.input文件上传到HDFS的/wordcountdemo/input目录中:
hdfs dfs -put /opt/data/wc.input /wordcountdemo/input
2、 运行WordCount MapReduce Job
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /wordcountdemo/input /wordcountdemo/output
3、 查看输出结果目录
控制台打印执行的日志
hdfs目录下面的结果
⭐️ output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。
⭐️part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有
reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。
⭐️ 一个reduce会产生一个part-r-开头的文件。
查看统计的结果
七.停止Hadoop
sbin/hadoop-daemon.sh stop namenode stopping namenode
sbin/hadoop-daemon.sh stop datanode stopping datanode
sbin/yarn-daemon.sh stop resourcemanager stopping resourcemanager
sbin/yarn-daemon.sh stop nodemanager stopping nodemanager
八.开启历史服务
1、历史服务介绍
Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
2、开启历史服务 sbin/mr-jobhistory-daemon.sh start historyserver
开启后,可以通过Web页面查看历史服务器:http://address-01:19888/
3 、Web查看job执行历史
1) 运行一个mapreduce任务
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /wordcountdemo/input /wordcountdemo/output
2) job执行中
3) 查看job历史
历史服务器的Web端口默认是19888,可以查看Web界面。
但是在上面所显示的某一个Job任务页面的最下面,Map和Reduce个数的链接上,点击进入Map的详细信息页面,再查看某一个Map或者Reduce的详细日志是看不到的,是因为没有开启日志聚集服务。
九.开启日志聚集
1、 日志聚集介绍
MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志, 将日志集中存放在HDFS上,这个过程就是日志聚集
2、 开启日志聚集
1) 配置日志聚集功能:
Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
yarn.log-aggregation-enable:是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。
2) 将配置文件分发到其他节点:
scp /opt/modules/hadoop-2.6.0-cdh5.7.0/etc/hadoop/yarn-site.xml root@address-02:/opt/modules/hadoop-2.6.0-cdh5.7.0/etc/hadoop/
scp /opt/modules/hadoop-2.6.0-cdh5.7.0/etc/hadoop/yarn-site.xml root@address-03:/opt/modules/hadoop-2.6.0-cdh5.7.0/etc/hadoop/
3) 重启Yarn进程: sbin/stop-yarn.sh sbin/start-yarn.sh
4) 重启HistoryServer进程:
sbin/mr-jobhistory-daemon.sh stop historyserver
sbin/mr-jobhistory-daemon.sh start historyserver
3、 测试日志聚集
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /wordcountdemo/input /wordcountdemo/output
查看日志:
运行Job后,就可以在历史服务器Web页面查看各个Map和Reduce的日志了。