http://blog.csdn.net/u012852986/article/details/51488496
明明之前已经在Ubuntu上部署过Hadoop了,换到CentOS又卡了好久,还是好弱,赶紧写篇博客记录下来。
一、安装JDK,配置环境变量
(1)查看CentOS自带JDK是否已安装
yum list installed|grep java
[图片上传中...(image-714da0-1513668920940-33)]
[图片上传中...(image-b5ea8f-1513668920938-20)]
**这里
我已经安装过了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)
[图片上传中...(image-b60898-1513668920937-4)]
[图片上传中...(image-9b7fb-1513668920937-7)]
(3)查看yum库中的Java包
*yum -y list java
(
注意*
)**
[图片上传中...(image-5cfd82-1513668920938-19)]
[图片上传中...(image-220169-1513668920937-6)]
(4)使用yum安装Java环境
*yum -y install java-1.8.0-openjdk
(
注意*
)**
[图片上传中...(image-990a11-1513668920937-3)]
[图片上传中...(image-385943-1513668920936-0)]
安装
完成后,就可以通过java -version和javac来查看刚安装的Java版本信息了
[图片上传中...(image-b4f49b-1513668920937-2)]
[图片上传中...(image-203962-1513668920937-1)]
(5)配置环境变量
vim /etc/profile
添加下面几行内容
[图片上传中...(image-35926f-1513668920938-18)]
[图片上传中...(image-989626-1513668920937-5)]
保存退出之后,再执行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
[图片上传中...(image-48952e-1513668920938-17)]
**(
2)解压缩**
tar -zxvf hadoop-1.2.1.tar.gz
[图片上传中...(image-9d28ce-1513668920939-32)]
[图片上传中...(image-ca525a-1513668920938-16)]
**(
3)4个需要配置的文件**
[图片上传中...(image-92961a-1513668920939-31)]
[图片上传中...(image-b6991b-1513668920938-15)]
**(
3-1)配置hadoop-env.sh**
这个文件是hadoop配置的环境变量等信息
vim hadoop-env.sh
[图片上传中...(image-58f914-1513668920939-30)]
[图片上传中...(image-dbfe6e-1513668920938-14)]
**将
这行的注释取消(去掉#)同时修改JAVA_HOME路径为上文配置Java环境变量时的JAVA_HOME路径**
(3-2)配置core-site.xml
这个文件是用做全局配置
vim core-site.xml
[图片上传中...(image-783d57-1513668920939-29)]
[图片上传中...(image-e37302-1513668920938-13)]
**具体
配置情况如上图,其中doarcutine为我主机的hostname,hostname通过输入**
hostname
就可以得到,这里还要注意主机名尽量不要包含特殊符号,centos修改主机名可以通过如下指令
sudo hostname doarcutine
[图片上传中...(image-b7c2b7-1513668920939-28)]
(3-3)配置hdfs-site.xml
这个文件是hdfs的局部配置(hadoop的关键就是hdfs和MapReduce,自然要对这两个分别做设置)
vim hdfs-site.xml
[图片上传中...(image-a350f8-1513668920939-27)]
[图片上传中...(image-283547-1513668920938-12)]
**配置
情况如上图**
(3-4)配置mapred-site.xml(mapred其实就是MapReduce的意思)
vim mapred-site.xml
[图片上传中...(image-8075e5-1513668920939-26)]
[图片上传中...(image-f7ef66-1513668920938-11)]
(4)配置环境变量
vim /etc/profile
添加如下两项内容
[图片上传中...(image-ef91ed-1513668920939-25)]
[图片上传中...(image-f2f862-1513668920938-10)]
**s
ource /etc/profile**
执行之后,可以通过执行
hadoop
[图片上传中...(image-582199-1513668920939-24)]
查看hadoop是否可以正常找到执行程序
[图片上传中...(image-c399fc-1513668920938-9)]
**(
5)格式化namenode**
这里可能遇到问题,见下文(7)
这是执行之前的第一步,为什么要格式化呢?因为hadoop可以看做一个单独的文件系统(准确的说是hdfs),所以就像空硬盘需要格式化一样,通过格式化让存储空间知道以什么方式组织数据。
**hadoop namenode -format (
建议在bin目录下执行
)**
[图片上传中...(image-22f042-1513668920938-23)]
[图片上传中...(image-e3f021-1513668920937-8)]
**(
6)启动start-all.sh**
这里可能遇到问题,见下文(7)
cd /opt/hadoop-1.2.1/bin
进入这个目录下,我们可以看到有start-all.sh这样一个文件,我们可以在任意一个地方执行这个文件。
start-all.sh
启动成功后如下图,输入jps可以看到启动的项目
[图片上传中...(image-954755-1513668920938-22)]
[图片上传中...(image-cf3756-1513668920938-21)]
大功告成
!
(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修改两个文件中主机名。**