安装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相关配置文件是否正确。