Hadoop伪分布式模式安装
防止环境装错所以先进行环境备份(centeros 装了jdk 和hadoop)
1.问题:
克隆出没有IP问题
解决:
用开网脚本:
在克隆新机执行脚本获取IP
脚本放在被克隆的主机上
在已经有的虚拟机上新建脚本文件(在root目录下)
[root@hadoop ~]# vi reset_ip.sh
脚本
#!/bin/bash
name=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=NAME=").*(?=")'|tail -1)
mac=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=ATTR{address}==").*?(?=",)'|tail -1)
sed -i s/DEVICE.*/DEVICE=${name}/ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/HWADDR=.*/HWADDR=${mac}/ /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
一、克隆
--- 关机命令 shutdown -h now
1.在VMware克隆---右键已有虚拟机---点击管理---点击克隆----下一步---选择虚拟机当前状态---克隆方法(选择创建完整克隆)----下一步----选择名字,选择地址---完成
2.获取IP
给脚本执行权限并执行
[root@hadoop ~]# chmod u+x reset_ip.sh
执行
[root@hadoop ~]# ./reset_ip.sh
修改主机名
[root@hadoop ~]# vi /etc/sysconfig/network
一、伪分布式Hadoop部署过程
1.找到hadoop(/opt/modules/hadoopstandalone)---复制到modules目录下
[root@hadoop hadoopstandalone]# cp hadoop-2.8.3 .tar.gz ../
当前文件解压
[root@hadoop modules]# tar -zvxf hadoop-2.8.3.tar.gz
改文件名
[root@hadoop modules]# mv hadoop-2.8.3.tar.gz hadoop
2.配置Hadoop环境变量
[root@hadoop modules]# vi /etc/profile
追加配置
export HADOOP_HOME="/opt/modules/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
*注意修改完一定要执行:source /etc/profile 使得配置生效
验证HADOOP_HOME参数:
[root@hadoop /]# echo $HAOOP_HOME
/opt/modules/hadoop
3. 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
[root@hadoop modules]# cd /hadoop/etc/hadoop
[root@hadoop modules]# pwd
/opt/modules/hadoop/etc/hadoop
修改JAVA_HOME参数为:export JAVA_HOME="/opt/modules/jdk1.8"
[root@hadoop hadoop]# vi hadoop-env.sh
[root@hadoop hadoop]# vi mapred-env.sh
[root@hadoop hadoop]# vi yarn-env.sh
4.配置core-site.xml
[root@hadoop hadoop]# vi core-site.xml
(1) fs.defaultFS参数配置的是HDFS的地址。
fs.defaultFS
hdfs://hadoop01:8020 //hadoop01--->主机名
hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖{user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
修改hadoop.tmp.dir
hadoop.tmp.dir
/opt/data/tmp
提示:exc ---》:wq保存
在配置完以上部分需要在data目录下创建tmp目录; tmp:NameNode,DataNode都会将数据存放到tmp目录中
[root@hadoop hadoop]# cd /opt/data
[root@hadoop data]# mkdir tmp
回到开始目录
[root@hadoop data]# cd /opt/modules/hadoop/etc/hadoop/
5.配置、格式化、启动HDFS
1、 配置hdfs-site.xml
[root@hadoop hadoop]# vi hdfs-site.xml
dfs.replication //副本个数 保存的文件备份是几份
1
2、 格式化HDFS
[hadoop@hadoop ~]$ hdfs namenode -format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data/tmp目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:
[hadoop@hadoop ~]$ ll /opt/data/tmp/dfs/name/current
*注意:格式化只能格式化一次不能在进行格式化
3、 启动NameNode(最重要的节点,管理DataNode)
[hadoop@hadoop ~]$ cd /opt/modules/hadoop/sbin/
[hadoop@hadoop sbin]# ./hadoop-daemon.sh start namenode
//执行命令的时候用 ./
查看是否成功
[hadoop@hadoop03 sbin]# jps
4、 启动DataNode
[hadoop@hadoop sbin]# ./hadoop-daemon.sh start namenode
5、 启动SecondaryNameNode
[hadoop@hadoop sbin]# ./hadoop-daemon.sh start SecondaryNameNode
6、 JPS命令查看是否已经启动成功,有结果就是启动成功了。
[hadoop@hadoop sbin]# jps
3034 NameNode
3233 Jps
3193 SecondaryNameNode
3110 DataNode
7、 HDFS上测试创建目录、上传、下载文件
HDFS上创建目录
[hadoop@hadoop sbin]# hdfs dfs -mkdir /demo1
上传本地文件到HDFS上
[hadoop@hadoop sbin]# hdfs dfs -put
${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1
注意:在HDFS上传文件下载不下来的问题解决:
本地计算机---》C:/Windows/System32/drivers/etc/hosts
添加IP映射
在最后添加 IP地址 + 主机名
例如
192.168.253.128 hadoop01
集群中有几台就添加几台IP映射
上传文件保存在虚拟机位置
/opt/data/tmp/dfs/data/current/BP-100305941-192.168.253.128/current/finalized/subdir0/subdir0
6.配置、启动YARN
1、 配置mapred-site.xml
默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。
[hadoop@hadoop hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
添加配置如下:
mapreduce.framework.name
yarn
指定mapreduce运行在yarn框架上。
2、 配置yarn-site.xml
添加配置如下:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop01
yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。
3、 启动Resourcemanager
[hadoop@hadoop hadoop]# yarn-daemon.sh start resourcemanager
4、 启动nodemanager
[hadoop@hadoop hadoop]# yarn-daemon.sh start nodemanager
5、 查看是否启动成功
[hadoop@hadoop hadoop]# jps
3034 NameNode
4439 NodeManager
4197 ResourceManager
4543 Jps
3193 SecondaryNameNode
3110 DataNode
可以看到ResourceManager、NodeManager已经启动成功了。
6、 YARN的Web页面
YARN的Web客户端端口号是8088,通过http://192.168.100.10:8088/可以查看。//自己的IP
7、运行MapReduce Job
在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。
1、 创建测试用的Input文件
创建输入目录:
[hadoop@hadoop hadoop]# cd /opt/data
[hadoop@hadoop data]# hdfs dfs -mkdir /input
[hadoop@hadoop data]# hdfs dfs -put wc.input /input
2、 运行WordCount MapReduce Job
/opt/modules/hadoop/
[hadoop@hadoop hadoop]# yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount /input/wc.input /output
output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。
part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。
一个reduce会产生一个part-r-开头的文件。
查看输出文件内容。
8.开启历史服务
1.历史服务介绍
Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
2.开启历史服务
[hadoop@hadoop hadoop]# sbin/mr-jobhistory-daemon.sh start historyserver
开启后,可以通过Web页面查看历史服务器:
http://192.168.253.128:19888/
3.Web查看job执行历史
1、 运行一个mapreduce任务
[hadoop@hadoop hadoop]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.5.0.jar wordcount /wordcountdemo/input /wordcountdemo/output1
2、 job执行中
3、 查看job历史
历史服务器的Web端口默认是19888,可以查看Web界面。
但是在上面所显示的某一个Job任务页面的最下面,Map和Reduce个数的链接上,点击进入Map的详细信息页面,再查看某一个Map或者Reduce的详细日志是看不到的,是因为没有开启日志聚集服务。