Hadoop伪分布模式搭建

环境1:
Redhat 5.0 (很久前在VMware虚拟机下安装的,很老的版本了)

hadoop 1.0.3 (也很老的版本了)

环境2:

CentOS 6.5 (2013.12月发布)

hadoop 2.5.1 (2014.9月发布)


下载hadoop
发现hadoop官网上的很多下载链接都出现403错误,一些老版本的也都链接失效了
hadoop下载地址 http://archive.apache.org/dist/hadoop/core/

jdk安装
用“java -version”查看是否已安装
下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html

设置JAVA_HOME和PATH环境变量
export PATH=${PATH}:/usr/java/jdk1.7.0_71/bin

export JAVA_HOME=/usr/java/jdk1.7.0_71


配置ssh
可通过which ssh、which sshd、which ssh-keygen来验证下是否安装好ssh.
安装好后生成密钥对,命令:ssh-keygen -t rsa (全部回车即可)
然后,需要把公钥复制到主节点和每个从节点上
scp ~/.ssh/id_rsa.pub hadoop-user@target:~/master_key
由于本文搭建伪分布模式,故只在复制到本机的~/master_key下.
然后手动登录目标节点,并设置主节点的密钥为授权密钥

mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/master_key ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

之后可尝试登录来验证正确性
$ ssh localhost
第一次需要输入yes进行确认,若仍然需要密码则需进行其他设置


配置hadoop
编辑conf/hadoop-env.sh文件,取消JAVA_HOME的注释,并设置好正确的位置
修改conf/core-site.xml:

<configuration>  
<property>  
<name>fs.default.name</name>  
<value>hdfs://localhost:9000</value>  
</property>  
</configuration>  
修改conf/hdfs-site.xml:
<configuration>  
<property>  
<name>dfs.replication</name>  
<value>1</value>  
</property>  
</configuration>  
修改conf/mapred-site.xml:
<configuration>  
<property>  
<name>mapred.job.tracker</name>  
<value>localhost:9001</value>  
</property>  
</configuration>  

格式化Namenode节点:

$bin/hadoop namenode –format


启动:

$ bin/start-all.sh


运行jps命令来查看启动状态

Hadoop伪分布模式搭建_第1张图片


遇到的问题:

1.一开始我下的jdk1.7的rpm安装包.使用rpm安装完后由于未设置环境变量执行java提示找不到命令,但在/usr/java目录下存在了,设置好环境变量后,执行java报错
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

出现原因:
JAVA_HOME/lib中的tools.pack没有被解压成tools.jar
JAVA_HOME/jre/lib中的rt.pack没有被解压成rt.jar

解决方法:
使用JAVA_HOME/lib中的unpack200工具进行解压. 
把x.pack解压为y.ja命令为:unpack200 x.pack y.jar


2.启动hadoop后,运行jps查看,发现就只有一个jps,其他NameNode、DataNode等全都没有

查看log目录下的以log后缀的文件发现有报错:

internal error: SHA-1 not available.
暂时不知道什么原因引起的,打算换个jdk版本试试,于是下了jdk1.8

配置好环境变量后运行java又报错:

cannot restore segment prot after reloc: Permission denied

网上搜了下,发现是SELinux引起的,于是把SELinux给disabled了

由于改错了地方重启后进不去系统了...详见http://blog.csdn.net/prstaxy/article/details/40835709


3.环境2下搭建时,由于hadoop用的最新版本2.5.1,其目录结构有些不同

conf/hadoop-env.sh文件目录变成了conf/hadoop/hadoop-env.sh文件

start-all.sh脚本也已经不在bin目录下,而在sbin目录下了


另外,sbin/start-all.sh和sbin/stop-all.sh已经不推荐使用

sbin/start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

sbin/stop-all.sh 
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh


你可能感兴趣的:(Hadoop伪分布模式搭建)