明明之前已经在Ubuntu上部署过Hadoop了,换到CentOS又卡了好久,还是好弱,赶紧写篇博客记录下来。
一、安装JDK,配置环境变量
(1)查看CentOS自带JDK是否已安装
yum list installed|grep java
这里我已经安装过了java-1.8.0-openjdk,为了方便演示所以就当做自带环境了,不影响接下来的操作。(这里补充一下jdk和openjdk的区别:简单来讲,openjdk只包含最精简的jdk,而且两者授权协议不同,openjdk采用GPL V2协议,jdk采用JRL,虽然都是开源,但前者可以用于商业,后者只能用于个人)
(2)卸载自带的Java环境
yum -y remove java-1.8.0-openjdk*(注意不要漏掉*,表示卸载所有openjdk相关文件,-y表示选项默认选yes)
(3)查看yum库中的Java包
yum -y list java* (注意*)
(4)使用yum安装Java环境
yum -y install java-1.8.0-openjdk*(注意*)
安装完成后,就可以通过java -version和javac来查看刚安装的Java版本信息了
(5)配置环境变量
vim /etc/profile
添加下面几行内容
保存退出之后,再执行source /etc/profile
至此Java环境就配置成功了,接下来是Hadoop的配置。
二、配置Hadoop
(1)下载Hadoop压缩包
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
(2)解压缩
tar -zxvf hadoop-1.2.1.tar.gz
(3)4个需要配置的文件
(3-1)配置hadoop-env.sh
这个文件是hadoop配置的环境变量等信息
vim hadoop-env.sh
将这行的注释取消(去掉#)同时修改JAVA_HOME路径为上文配置Java环境变量时的JAVA_HOME路径
(3-2)配置core-site.xml
这个文件是用做全局配置
vim core-site.xml
具体配置情况如上图,其中doarcutine为我主机的hostname,hostname通过输入
hostname
就可以得到,这里还要注意主机名尽量不要包含特殊符号,centos修改主机名可以通过如下指令
sudo hostname doarcutine
(3-3)配置hdfs-site.xml
这个文件是hdfs的局部配置(hadoop的关键就是hdfs和MapReduce,自然要对这两个分别做设置)
vim hdfs-site.xml
配置情况如上图
(3-4)配置mapred-site.xml(mapred其实就是MapReduce的意思)
vim mapred-site.xml
(4)配置环境变量
vim /etc/profile
添加如下两项内容
source /etc/profile
执行之后,可以通过执行
hadoop
查看hadoop是否可以正常找到执行程序
(5)格式化namenode
这里可能遇到问题,见下文(7)
这是执行之前的第一步,为什么要格式化呢?因为hadoop可以看做一个单独的文件系统(准确的说是hdfs),所以就像空硬盘需要格式化一样,通过格式化让存储空间知道以什么方式组织数据。
hadoop namenode -format (建议在bin目录下执行)
(6)启动start-all.sh
这里可能遇到问题,见下文(7)
cd /opt/hadoop-1.2.1/bin
进入这个目录下,我们可以看到有start-all.sh这样一个文件,我们可以在任意一个地方执行这个文件。
start-all.sh
启动成功后如下图,输入jps可以看到启动的项目
大功告成!
(7)一些可能遇到的问题
(7-1)执行(5)时如果报错,则很有可能是Java路径配置有问题,注意查看/etc/profile和/opt/hadoop-1.2.1/conf/hadoop-env.sh这两个文件中Java路径是否正确。
(7-2)执行(6)时如果报错异常了,并且有一句是Caused by: java.lang.RuntimeException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence。那么原因就是当前系统用的语言是GBK,所以需要前面配置的3个xml用GBK编码,当然更好的方式是把系统语言改成utf8,具体修改方法参考http://blog.csdn.net/wave_1102/article/details/45116783
(7-3)执行(6)总提示localhost的密码不对。
执行命令 ssh localhost,查看ssh是否可以免密码登录,如果不可以,启动下面命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
之后应该可以了 如果还是不可以就从新设置一下ssh文件权限之后再执行上述命令应该就可以了
(7-4)执行jps后,进程数目不正常(比截图中要少,只有其中的个别几个),这个原因在于配置文件中主机名错误,建议修改为一个没有特殊字符的主机名,修改方式见(3-2),然后/opt/hadoop-1.2.1/conf/core-site.xml和/opt/hadoop-1.2.1/conf/mapred-site.xml修改两个文件中主机名。