Hadoop伪分布式运行(单机版)

1.安装hadoop

hadoop安装步骤

2.配置集群

(1)修改配置文件:hadoop-env.sh

Linux系统中获取JDK的安装路径:
[lzh@hadoop101 hadoop]$ echo $JAVA_HOME
/opt/module/jdk1.8.0_144
进入hadoop-env.sh文件:
[lzh@hadoop101 hadoop]$ vi /opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
修改JAVA_HOME 路径:

export JAVA_HOME=/opt/module/jdk1.8.0_144
(2)修改配置文件:core-site.xml

[lzh@hadoop101 ~]$ vi /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

<!-- 指定HDFS中NameNode的地址 hadoop101是在/etc/hosts目录下配置的域名映射-->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 如果不配置 它的默认位置在/tmp/{$user}下面 不配置的话重启linux tmp 下的目录被清空-->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(3)修改配置文件:hdfs-site.xml

创建

<!-- 指定HDFS副本的数量 不配置默认是3个 这里搭建伪分布式配置数量为1-->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

<!-- 这个参数用于确定将HDFS文件系统的元信息保存在什么目录下 不配置默认存/tmp/下 重启linux会造成问题-->
<property>
	<name>dfs.namenode.name.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/name</value>
</property>

<!-- 这个参数用于确定将HDFS文件系统的数据保存在什么目录下 不配置默认存/tmp/下 重启linux会造成问题-->
<property>
	<name>dfs.datanode.data.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/data</value>
</property>

3.启动集群

(1)格式化NameNode(第一次启动时格式化,以后就不要格式化了)
[lzh@hadoop101 ~]$ hadoop namenode -format

格式化的作用:
(a)创建一个全新的元数据存储目录,在hdfs-site.xml中配置过的dfs.namenode.name.dir路径
执行hadoop namenode -format后查看生成的目录
cd /opt/module/hadoop-2.7.2/data/name
(b)生成记录元数据的文件fsimage
进入cd /opt/module/hadoop-2.7.2/data/name/current/
查看ll
(c)生成集群的相关标识:如:集群id——clusterID
进入VERSION文件查看 vi /opt/module/hadoop-2.7.2/data/name/current/VERSION

(2)启动NameNode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
(3)启动DataNode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
(4)查看是否启动成功

(a)输入jps命令 出现NameNode和DataNode表示启动成功

[lzh@hadoop101 hadoop-2.7.2]$ jps
1634 Jps
1142 NameNode
1193 DataNode

注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps

(b)web端查看HDFS文件系统
在浏览器访问http://hadoop101:50070/dfshealth.html#tab-overview
如果没在本地hosts文件配置hadoop101的映射,把hadoop101替换成linux上对应的ip即可访问
(c)查看产生的Log日志(遇到问题先查看日志)
[lzh@hadoop101 hadoop-2.7.2]$ cd /opt/module/hadoop-2.7.2/logs/

4.启动YARN并运行MapReduce程序

(1)配置集群

(a)配置yarn-env.sh

#some Java parameters
export JAVA_HOME=/opt/module/jdk1.8.0_144

(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>hadoop101</value>
</property>

(c)配置:mapred-env.sh

[lzh@hadoop101 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

(d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml

[lzh@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
[lzh@hadoop101 hadoop]$ vi mapred-site.xml
<!-- 指定MR运行在YARN上 不配置默认值为local是在本地运行-->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
(2)启动yarn集群

(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager

[lzh@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager

(c)启动NodeManager

[lzh@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
(3)操作集群并完成一个wordcount(完成单词个数计算)

(a)YARN的浏览器页面查看,如下图所示(如果没在本地hosts文件配置hadoop101的映射,把hadoop101替换成linux上对应的ip即可访问)
http://hadoop101:8088/cluster
在这里插入图片描述
(b)
1.创建在hadoop-2.7.2文件下面创建一个wcinput文件夹

[lzh@hadoop101 hadoop-2.7.2]$ mkdir wcinput

2.在wcinput文件下创建一个wc.input文件

[lzh@hadoop101 hadoop-2.7.2]$ cd wcinput
[lzh@hadoop101 wcinput]$ vi wc.input

3.插入如下几个单词

hello lzh
hello hadoop
this is first hadoop demo

:wq保存退出
(c)在HDFS文件系统上创建一个input文件夹

[lzh@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/lzh/input
[lzh@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -put wcinput/wc.input /user/lzh/input/

(d)执行MapReduce程序

[lzh@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/lzh/input  /user/lzh/output

(e)查看运行结果在这里插入图片描述

[lzh@hadoop101 hadoop-2.7.2]$ hdfs dfs -cat /user/lzh/output/*
demo	1
first	1
hadoop	2
hello	2
is	1
lzh	1
this	1

面试题:为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
进行如下操作 分别进入name/current/和data/current/目录下查看VERSION

[lzh@hadoop101 ~]$ cd /opt/module/hadoop-2.7.2/data/name/current/
[lzh@hadoop101 current]$ cat VERSION
clusterID=CID-64fa3d6f-ed36-401d-922e-b21f0959b402
[lzh@hadoop101 current]$ cd /opt/module/hadoop-2.7.2/data/data/current/
[lzh@hadoop101 current]$ cat VERSION
clusterID=CID-64fa3d6f-ed36-401d-922e-b21f0959b402

观察发现 NameNode和DataNode的集群id是一致的 这可以保证两者可以顺利找到对方,一旦再次执行hadoop namenode -format格式化命令,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值