hadoop伪分布式搭建
- 安装JDK
1) 创建文件夹
mkdir ~/jdk1.8
2) 解压文件到这个目录下
mv jdk-8u60-linux-x64.tar.gz jdk1.8
tar -xzvf jdkxxx.tar.gz
3) 将新安装的的java添加到环境变量中
vi ~/.bash_profile
JAVA_HOME=/home/hadoop/jdk1.8/jdk1.8.0_60;export JAVA_HOME
PATH=$JAVA_HOME/bin:/usr/bin:/usr/sbin/:/sbin:/bin:$PATH;export PATH
4) 重新执行.bash_profile,使得新的环境变量生效。并查看java版本
#. ~/.bash_profile
#java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
安装hadoop。hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop,伪分布式需要修改5个配置文件.
1) 配置hadoop- 修改第一个配置文件hadoop-env.sh(主要是制定java_home)
#第27行
export JAVA_HOME=/home/hadoop/jdk1.8/jdk1.8.0_60
- 修改第二个配置文件core-site.xml(指定NameNode的地址)
#在\<Configuration>\</configuration>中新增
<!-- 制定HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://DEVSRV3-SIT.localdomain:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp</value>
</property>
- 修改第三个配置文件hdfs-site.xml
<!-- 制定hdfs副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- 修改第四个配置文件mapred-site.xml(没有这个文件,可以cp或者mv出来)
<!--执行mapreduce运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 修改第五个文件:yarn-site.xml
<!-- 制定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>DEVSRV3-SIT.localdomain </value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2) 将hadoop添加到环境变量中.bash_profile中,之后source ~/.bash_profile。如果终端上有hadoop命令提示,则代表路径配置成功.
HADOOP_HOME=/home/hadoop/hadoop-2.7.1;export HADOOP_HOME
PATH=$JAVA_HOME/bin:/usr/bin:/usr/sbin/:/sbin:/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH;export PATH
3) 格式化namenode(也叫初始化namenode)
hdfs namenode -format
4) 启动hadoop
- 先启动hdfs,需要多次输入yes,会使用ssh免密码登录。
start-dfs.sh - 再启动YARN
start-yarn.sh
5) 验证是否启动成功
使用jps验证,应该包括下面内容:
28352 NameNode
23986 Jps
31474 DataNode
21923 NodeManager
21075 ResourceManager
3167 SecondaryNameNode
HDFS管理页面:
http://20.4.16.19:50070
MR管理页面
http://20.4.16.19:8088
- 先启动hdfs,需要多次输入yes,会使用ssh免密码登录。
- 修改第一个配置文件hadoop-env.sh(主要是制定java_home)
配置SSH免密码登录
#生成ssh密钥
ssh-keygen -t rsa
#将id_rsa.pub拷贝到需要免登陆的机器上~/.ssh/authorized_keys中即可
#试验一下效果
ssh hadoop@localhost date
报错总结
- hadoop namenode -format报错:
Invalid byte 2 of 2-byte UTF-8 sequence
这个错误是XML的编码是UTF8的,但是我们编辑的时候使用的xshell字符集是GBK,所以导致中文乱码。造成XML解析问题。 WARN: Unable to load native-hadoop library for your platform
I assume you’re running Hadoop on 64bit CentOS. The reason you saw that warning is the native Hadoop library $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 was actually compiled on 32 bit.
Anyway, it’s just a warning, and won’t impact Hadoop’s functionalities.
start-yarn.sh启动后jps中没有nodeManager和ResourceManager,这里要看对应.out文件的log。本次是在配置yarn-site.xml中主机名后多了一个空格造成的。