伪分布式运行Hadoop 案例-03

本地文件运行Hadoop 案例-02

https://blog.csdn.net/kxj19980524/article/details/88935171

HDFS上运行MapReduce 程序

notpad++连接虚拟机修改配置文件https://blog.csdn.net/kxj19980524/article/details/88655985

修改hadoop-env.sh文件,env结尾的文件都是修改里面的java路径

伪分布式运行Hadoop 案例-03

修改core-site.xml,指定Namenode路径

下面这是用的notpad++的ftp功能,这个属性官网上查到默认是在本地的file:///三个斜杠表示本地的意思.修改成自己的ip地址.因为现在是为分布式,都在一台电脑上,所以配一个地址就可以了.hadoop101是我在/etc/hosts文件里配置过的.

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

<!-- 指定HDFS中NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
    <value>hdfs://hadoop101:8020</value>
</property>

修改hdfs-site.xml,指定副本数个数

dfs副本数默认是3个,因为现在就一个节点,所以配置为1

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

第一次启动伪分布式集群,先格式化namenode

伪分布式运行Hadoop 案例-03

hdfs namenode -format 格式化namenode ,注意,以后所有操作都在自己创建的那个用户权限下执行命令

伪分布式运行Hadoop 案例-03

ps表示查看进程,jps表示查看java的进程,现在是什么都没有的

伪分布式运行Hadoop 案例-03

sbin/hadoop-daemon.sh start namenode 启动namenode进程

伪分布式运行Hadoop 案例-03

启动datanode   sbin/hadoop-daemon.sh start datanode

伪分布式运行Hadoop 案例-03

启动失败的话,这里有启动的日志可以查看错误.这种以log结尾的文件就是启动日志文件

伪分布式运行Hadoop 案例-03

hadoop还提供了一个hdfs的web页面端口为50070,红框框的点一下进去就是hdfs的存放路径,这页面只能查看,不能修改

伪分布式运行Hadoop 案例-03

在hdfs上创建文件夹hadoop fs 和 bin/hdfs dfs是等价的,-p表示创建多级目录

hadoop fs -mkdir -p /user/kxj/input

bin/hdfs dfs -mkdir -p /user/kxj/input

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

-R表示递归查询/目录下的所有文件

伪分布式运行Hadoop 案例-03

hadoop fs -put wcinput/wc* /user/kxj/input把测试文件上传到hdfs上去

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

在hdfs上执行程序,只需要把后面的输入输出路径改为hdfs上的路径就可以了

 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/kxj/input /user/kxj/output 

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

可以下载下来进行查看

伪分布式运行Hadoop 案例-03

hadoop fs -cat /user/kxj/output/part-r-00000使用操作命令进行查看,一般后面跟的都和linux命令相似

伪分布式运行Hadoop 案例-03

hadoop fs -rmr /user/kxj/output 删除hdfs上的文件夹,rmr表示递归删除

伪分布式运行Hadoop 案例-03

在yarn上运行wordcount程序

修改这两个文件里的java路径yarn-env.sh     mapred-env.sh

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

修改yarn-site.xml ,上面的这都是固定写法

伪分布式运行Hadoop 案例-03

<!-- 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>

对mapred-site.xml.template重新命名为 mapred-site.xml,然后编辑它,指定mapreduce运行在yarn上.默认是在本地运行.

 mv mapred-site.xml.template mapred-site.xml 

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

<!-- 指定mr运行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

然后启动集群,先启动namenode,datanode,再启动resourcemanager,nodemanager

sbin/yarn-daemon.sh start resourcemanager   

sbin/yarn-daemon.sh start nodemanager    

伪分布式运行Hadoop 案例-03

8088端口就是运行mapreduce程序进度

伪分布式运行Hadoop 案例-03

然后进行测试,首先把上面测试完后生成的output文件删掉

伪分布式运行Hadoop 案例-03

然后还是执行上面的那个执行命令,就会发现在yarn上运行的时候就会有进度条了,这就是yarn在资源管理.

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/kxj/input /user/kxj/output

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

修改本地临时文件存储目录

默认是存储在根目录下的tmp文件夹里,现在把它修改到hadoop/data/tmp文件夹里

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03

先把那四个进程都关掉

sbin/hadoop-daemon.sh stop resourcemanager

sbin/hadoop-daemon.sh stop nodemanager

sbin/hadoop-daemon.sh stop namenode

sbin/hadoop-daemon.sh stop datanode

然后把上面那几个生成的文件都删掉/tmp下面的删掉

修改core-site.xml指定生成路径

伪分布式运行Hadoop 案例-03

<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

删除logs日志

伪分布式运行Hadoop 案例-03

然后进行格式化 hdfs namenode -format ,这个文件夹就有了,然后再启动集群进行测试

伪分布式运行Hadoop 案例-03

伪分布式运行Hadoop 案例-03