Hadoop ubuntu伪分布式配置及简单使用
Posted 程序猿武道馆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop ubuntu伪分布式配置及简单使用相关的知识,希望对你有一定的参考价值。
Hadoop的主要作用是进行数据的分布式存储和分析,如果不在分布式环境下使用Hadoop,难免有些大材小用。之前两篇文章介绍了MapReduce程序的编写,并且简单介绍了MapReduce的执行流程,今天来看看如何搭建伪分布式环境,然后将之前的示例在伪分布式环境下运行。
Hadoop运行在伪分布式或分布式模式下时,有几个重要的概念需要简单介绍一下。在进行配置前,首先了解一下。
基本概念
HDFS
HDFS是Hadoop的分布式文件系统,上传到Hadoop的文件,就放置在HDFS中。HDFS中有两类节点:namenode和datanode,一个namenode管理多个datanode,namenode类似于目录树,掌管着HDFS中文件的信息,包括该文件相关的datanode的信息;datanode则实际保存着文件的数据块。
YARN
YARN是Hadoop的集群资源管理系统,当我们使用Hadoop,资源请求会交给YARN处理,YARN会对资源的使用进行调度。
伪分布式环境搭建
之前已经在单机环境下配置了Hadoop,这里不再赘述,我们直接开始伪分布式环境的搭建。伪分布式环境下,Hadoop守护进程运行在本机上,需要安装ssh,以方便与其进行通信。
SSH配置
安装ssh
$ sudo apt-get install ssh
设置无密码登录
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh-add
测试
$ ssh localhost
如果看到Welcome to ...的字样,且进入到新的命令提示符,说明登陆成功,验证后exit退出即可。设置无密码登录,主要是为了方便使用,否则在以后启动Hadoop时候会多次要求输入密码。大家也可以尝试这里先不设置登录密码,进行后面的工作。
Hadoop伪分布式配置
Hadoop的配置文件在Hadoop的安装目录下的etc/hadoop目录下,我们利用这些文件进行配置。
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.8.2/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
hadoop.tmp.dir
该属性指定Hadoop的临时目录,默认设置是/tmp目录,但是该目录下的内容会在系统重启时清空,导致我们的很多文件重启后就被删除,所以需要设置该选项。我设置在了Hadoop安装目录下的tmp目录下。
fs.defaultFS
默认的文件系统,使用uri进行标识,我们的uri使用了hdfs,所以说明我们的文件系统是HDFS。
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
dfs.replication
上传到HDFS的文件的副本数,默认是3,主要是考虑数据的可靠性。但是我们是伪分布配置,只需要一份副本即可。
dfs.namenode.name.dir
namenode需要保存的数据信息放在该目录下。
dfs.datanode.data.dir
datanode需要保存的数据信息放在该目录下。
这两个配置文件完成了对HDFS的配置,接下来对YARN进行配置。
mapred-site.xml
$ sudo mv mapred-site.xml.template mapred-site.xml
Hadoop为我们提供了一个模板,我们在此基础上进行修改,指定使用YARN资源管理器。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
yarn.resourcemanager.hostname
资源管理器主机名。
yarn.nodemanager.aux-services
MapReduce中的shuffle就在这里设置。
这样,HDFS和YARN就配置好了,不过,在启动前,先要格式化HDFS,先要修改hadoop目录的所有者
$ sudo chown 你的用户名:你的用户所在组 Hadoop安装路径
$ hdfs namenode -format
如果看到打印最后几行有下面的文字,说明我们格式化成功。
Exiting with status 0
胜利在望,最后,编辑etc/hadoop/hadoop-env.sh,其中有一行
export JAVA_HOME=${JAVA_HOME}
将其修改为
export JAVA_HOME=你的JAVA_HOME位置
现在启动吧
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
使用jps进行查看,需要有相应的Java进程启动(前面的数字可能不同)。
$ Java安装目录/bin/jps
26803 JobHistoryServer
26083 SecondaryNameNode
26293 ResourceManager
26421 NodeManager
26855 Jps
25726 NameNode
25855 DataNode
Hadoop为我们提供了Web页面,可以从Web页面查看Hadoop的运行情况:
namenode:http://localhost:50070
资源管理器:http://localhost:8088
历史服务器:http://localhost19888
如果要停止,只要执行
$ mr-jobhistory-daemon.sh stop historyserver
$ stop-yarn.sh
$ stop-dfs.sh
伪分布式简单使用
配置并启动之后,我们来做一些简单的操作,首先为自己的用户创建一个目录。
$ hadoop fs -mkdir -p /user/$USER
然后查看一下
$ hadoop fs -ls /user/
应该可以看到一个以你的用户名命名的目录。
从上面两个命令应该可以看出来,Hadoop操作HDFS的命令和Shell的命令基本类似,基本格式就是
hadoop fs -命令名称 [选项] [操作对象]
创建一个input目录
$ hadoop fs -mkdir /user/$USER/input
删除input目录
$ hadoop fs -rm -r /user/$USER/input
把之前我们文章中用的text文件放到input中
$ hadoop fs -put text /user/$USER/input
执行我们之前的示例
$ hadoop jar HadoopDemo.jar com.yjp.mapreduce.FirstCharCount input output
查看运行结果
$ hadoop fs -cat output/*
也可以把结果拿到本地
hadoop fs -get output output
后面几个命令大家可能会奇怪,为什么没有使用/user/$USER/,这是因为Hadoop如果访问HDFS的目录时,会自动添加/user/$USER/,例如最后的get命令,第一个output是HDFS上的目录,第二个output是本地output目录。
苹果用户可长按或扫描下方二维码进行赞赏
以上是关于Hadoop ubuntu伪分布式配置及简单使用的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)