本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识。
首先安装Hadoop之前需要准备安装环境。
- 安装Centos6.5(64位)。(操作系统再次不做过多描述,自行百度)
- 安装JDK1.7(64位)。
- 安装Hadoop2.2(稳定版本64位)
注意:以上三者版本需要统一,必须同为64位/32位
1.安装JDK1.7
下载JDK1.7,然后拷贝到指定目录
cd /usr/local/
解压缩:
配置环境变量:
vim /etc/profile.d/java.sh
添加如下内容:
CLASSPATH=$JAVA_HOME/lib:$CLASSPATH PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
执行:
source /etc/profile.d/java.sh
java -version显示出JDK相关信息
2.配置hosts文件,使访问更加方便
vim /etc/hosts
在文件末尾加入:
192.168.1.1(本机ip) taurus(本机域名)
3.关闭防火墙:
查看防火墙状态:service iptables status
关闭防火墙:chkconfig iptables off(永久性生效) service iptables stop(即时生效,重启后复原)
4.SSH无密码验证配置
创建hadoop用户组
groupadd hadoop
创建hadoop用户
useradd group group
为hadoop用户设置密码
passwd hadoop
创建.ssh文件
mkdir .ssh
使用命令生成密钥:
ssh-keygen -t rsa
用公钥生成认证文件
cp id_rsa.pub authorized_keys
赋予文件权限
.ssh .ssh/*
然后使用ssh连接当前节点,ssh taurus(本机域名) 如果提示ssh未安装执行命令:
yum -y install openssh-clients
如果还是提示下列错误:
: Connection refused
说明ssh-server没有安装
sudo apt-get install openssh-server 进行安装
然后在使用ssh localhost应该会连接成功。
5.开始搭建伪分布式环境
下载hadoop2.2.0安装包
wget http://hadoop.f.dajiangtai.com/hadoop2.2/hadoop-2.2.0-x64.tar.gz
解压安装包:
-x64.tar.gz
重命名hadoop-2.2.0-x64.tar.gz
-x64.tag.gz hadoop
将haddop文件夹的权限赋予hadoop用户
chown -R hadoop:hadoop hadoop
创建hadoop数据目录--3个
root@taurus:/usr/local# mkdir -p /data/dfs/name root@taurus:/usr/local# mkdir -p /data/dfs/data root@taurus:/usr/local# mkdir -p /data/tmp
将创建的文件夹权限赋予hadoop用户
root@taurus:/usr/local# chown -R hadoop:hadoop hadoop /data
然后切换到hadoop用户,进入hadoop文件夹下etc/hadoop目录:
su hadoop cd etc/hadoop vim core-site.xml
添加如下内容到core-site.xml文件
默认HDFS路径
存放数据的公共目录
设置hadoop安全机制的代理用户和用户组
修改hdfs-site.xml文件,添加如下内容:
Namenode文件目录
Datanode文件目录
数据快副本
HDFS权限
接下来配置mapred-site.xml文件:
由于没有mspred-dite.xml文件,因此需要复制mapred-site.xml.template
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml添加如下内容:
制定mapreduce环境为yarn;
配置yarn-site.xml文件,添加如下内容:
为了使mapreduce程序运行起来,需要nodemanager启动加载shuffle
修改slaves文件:(指定namenode路径)由于当前配置伪分布时集群,所以namenode和datanode在同一个节点上。
配置hadoop环境变量:
su root
vim /etc/profile
添加如下内容:
使配置文件生效使用source命令:
source /etc/profile
以上我们就配置完成了,接下来测试运行
su hadoop
进入安装目录
cd /usr/local/hadoop
然后格式化namenode
bin/hadoop namenode -format
没有报错,接下来我们就可以启动hadoop了:
cd /usr/lcoal/hadoop sbin/satrt-all.sh
如果启动时报Error: JAVA_HOME is not set and could not be found
解决办法:修改/etc/hadoop/hadoop-env.sh中设的JAVA_HOME。
应当使用绝对路径:
export JAVA_HOME=${JAVA_HOME} //文档原来的(错误) export JAVA_HOME=/usr/local/jdk1. //正确,应该这么改
然后再次启动sbin/start-all.sh
成功后,jps显示如下:
打开浏览器:
访问http://taurus(对应你本机域名):50070 --查看namenode文件和集群的状态
接下来使用hadoop自带wordcount程序运行测试
在hadoop文件目录下,执行如下操作:
vim wordcount.txt 添加如下内容: alan hadoop alan hadoop alan hadoop 保存退出
查看hadoop根目录下文件:
hadoop fs -ls /
创建一个测试目录:
hadoop fs -mkdir /taurus
将刚才创建的文件上传到测试目录:
hadoop fs -put /usr/local/hadoop/wordcount.txt /sample
执行wordcount程序:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-.jar wordcount /sample/wordcount.txt /sample/wordcount-out
在浏览器访问http://taurus(自己的域名):8088/cluster/apps
查看程序的运行状态。
在浏览器访问http://taurus(自己的域名):50070
查看程序的运行结果。