安装Hadoop,让Wordcount飞起来






安装部署hadoop 伪分布集群。

在hadoop环境搭建之前,确保centos系统的网络配置正常、新用户已经创建、hostname已经设置、 静态IP已经设置、防火墙已经关闭、相关服务已经安装。

1、jdk安装

前面我们已经安装了64位的centos系统,所以我们的jdk也需要安装64位的。

创建安装目录/usr/java(当然,大家也可以使用其它目录)


大家注意:前面centos安装的时候,hostname为dajiangtai, 这里我换成了djt002,hostname大家可以自由修改,没有必要大惊小怪。当然大家可以直接使用dajiangtai就可以。

将下载好的jdk上传至/usr/java当前目录下。没有下载好的同学,可以点击下载



解压jdk安装包。



设置jdk环境变量,在/etc/profile.d目录下,新建一个java.sh脚本,添加如下内容。 当然配置jdk环境环境变量有很多种方式,大家也可以使用 vi /etc/profile 命令打开文件,添加相应的内容。



保存添加的内容并退出。

通过source使java.sh文件立即生效,如果能查看Java的版本号,代表jdk安装成功。


2、修改host文件,设置hostname与ip之间的映射关系。




大家注意:前面centos安装的时候,ip地址为192.168.20.160,这里我已经换了ip, ip变成了192.168.1.127, 大家没有必要大惊小怪。大家只需通过ifconfig命令查看当前ip地址, 然后设置hostname与ip之间的对应关系就可以了。当然大家直接使用前面配置的ip(192.168.20.160),没有问题。

3、配置ssh免密码

在hadoop用户下,切换到根目录。

[hadoop@djt002 root]$ cd
[hadoop@djt002 ~]$

创建‘.ssh’目录。

[hadoop@djt002 ~]$ mkdir .ssh

生成秘钥,输入命令后,一直回车。



进入 .ssh 目录下。


将公钥拷贝到认证文件。



退回到根目录下,为.ssh赋予权限。


使用ssh 登录djt002,第一次登陆需要输入yes,第二次以后登录就不需要密码,此时表明设置成功


4、安装hadoop

在/usr/java目录下,在线下载hadoop2.2.0安装文件。当然我们也可以直接下载Hadoop安装包进行安装。


解压hadoop安装文件。



修改hadoop解压文件名称


将hadoop安装目录的权限赋值为hadoop用户。


创建Hadoop数据目录,并赋予权限。


进入hadoop安装目录的配置文件路径下。


修改core-site.xml配置文件



修改hdfs-site.xml配置文件。



修改mapred-site.xml配置文件。



修改yarn-site.xml配置文件。



修改slaves配置文件。



配置hadoop 环境变量。



使配置文件生效。


5、测试运行。

格式化NameNode



启动hadoop


出现以下进程说明hadoop启动成功。


通过webui访问文件系统。


在本地新建一个djt.txt文件并输入内容。



在hdfs文件系统中,新建一个dajiangtai目录并将本地djt.txt文件上传至该目录下。


通过webui查看hadoop作业运行情况。


让Wordcount飞起来。


通过webui查看作业正在运行情况。


在文件系统中查看作业最后运行结果。

特别提醒:在地址栏中输入主机名:50070(即端口号是50070,而不是50075)


关闭hadoop集群。


注意:大家在hadoop集群启动或者关闭的时候,最好使用命令正常关闭。



hadoop出现问题怎么办?

查看hadoop集群相关进程的启动情况。


如果哪个进程没有启动起来,我们可以查看对应进程的日志。 假如datanode没有启动,我们查看datanode对应的日志。



如果hadoop集群作业运行过程中出现问题怎么办?

可以查看作业运行日志,而且是userlogs目录中最大编号的文件目录。



环境搭建常见问题

1、报类似如下错误:org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /dajiangtai/djt.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation. at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1384)

【问题分析】出现上述错误,一般是由于datanode没有启动。

【解决方案】(1)首先关闭hadoop集群;(2)清空创建的/data目录;(3)格式化NameNode,重启hadoop集群。

2、报类似如下错误:FATAL namenode.NameNode: Exception in namenode join java.io.IOException: Cannot remove current directory: /data/dfs/name/current at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:299)

【问题分析】/data目录的权限不够,NameNode无法启动。

【解决方案】(1)在root用户下,将/data/目录的操作权限赋给hadoop用户; (2)清空/data目录的文件;(3)重新格式化NameNode,重启hadoop集群。

集群启动失败如何排查?

首先查看启动进程,打开没有启动的进程对应的日志,查看错误信息进行排错。一定要先查看日志,才能帮助我们解决问题。如果日志看不出明显的错误,可以从以下几个思路检查集群状况。

1、检查防火墙是否关闭。

2、检查ssh是否配置正确。

3、检查hadoop相关目录是否具有hadoop用户权限。

4、检查Hadoop相关配置文件是否正确。