CentOS7安装单机版Hadoop2.7.3
前期准备
-
安装java,拷贝oracle官网下载的jdk-8u111-linux-x64.rpm到虚拟机内。并安装:
rpm -i jdk-8u111-linux-x64.rpm
-
设定java路径为环境变量,编辑/etc/profile文件,加入一行:
export JAVA_HOME=/usr/java/latest
-
通过source命令应用JAVA_HOME环境变量,并验证
echo $JAVA_HOME //输出空路径 source /etc/profile echo $JAVA_HOME //此时输出正确的JAVA_HOME
拷贝hadoop-2.7.3.tar.gz到用户路径下。
-
解压缩
tar -xf hadoop-2.7.3.tar.gz
获得hadoop-2.7.3目录,进入该目录下。
以standalone形式运行hadoop程序
具体请参考: http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/SingleCluster.html
第一步,以单机模式运行Hadoop程序:
-
为Hadoop配置Java运行路径,编辑Hadoop-2.7.3路径下的 etc/hadoop/hadoop-env.sh 文件加入java路径,如下行:
export JAVA_HOME=/usr/java/latest
-
执行Hadoop自带的mapReduce示例:
//在Hadoop-2.7.3路径下创建input目录 $ mkdir input //将hadoop的配置拷贝到刚创建的input目录下 $ cp etc/hadoop/*.xml input //对input路径下的文件执行Hadoop自带示例中的MapReduce程序,并将输出写入到output目录中。**这里增加了2>>err.txt,由于Hadoop的输出一闪而过,通过这条参数将其输出到err.txt文件中。** $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input/ output/ 'dfs[a-z.]+' 2>>err.txt $ cat output/*
-
执行后,查看err.txt文件发现报错,暂时不知道报错原因:
EBADF:Bad file descriptor
-
通过命令查看output目录内的输出
1 dfsadmin
注意如果要再次运行该mapReduce程序,要先删除output命令,否则会出现output目录已经存在的报错。
第二步,搭建伪分布式(开启HDFS)
根据Apache的教程,配置core-site.xml和hdfs-site.xml
安装ssh
-
格式化分布式文件系统
$ bin/hdfs namenode -format
-
启动分布式文件系统,中间需要确认几次输入yes。分别启动namenode, datanode, secondarynamenode。
$ sbin/start-dfs.sh
浏览器访问http://localhost:50070可以看到远程访问hdfs的页面,启动HDFS成功。
-
在hdfs上创建input目录
bin/hdfs dfs -mkdir /input
-
将文件系统中Hadoop-2.7.3安装目录下的配置路径etc/hadoop中所有的配置文件拷贝到hdfs上的/input目录中
bin/hdfs dfs -put etc/hadoop/* /input
-
在HDFS上运行之前的mapReduce示例,并将错误日志输出到err2.txt:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+' 2>>err2.txt
可以看到仍然包含bad file description异常。这个异常后面再去找原因。
-
查看刚才mapReduce计算的输出
$ bin/hdfs dfs -cat /output/*
-
如果要关闭hdfs使用:
$ sbin/stop-dfs.sh
第三步,在单节点上开启yarn
根据Apache的官方教程,编辑两个配置文件mapred-site.xml和yarn-site.xml
-
键入命令启动yarn
sbin/start-yarn.sh
-
如果要关闭yarn键入命令:
sbin/stop-yarn.sh
总结
- 最初只给虚拟机分配了2G的内存,单核CPU。在运行上面的MapReduce例子时会出现卡死的情况。分析日志发现同时有OutOfMemory和TimeOut两种异常。通过增加CPU到4核,内存到5G,在yarn上能够顺利的运行MapReduce例子了。