网络上充斥着大量Hadoop1的教程,版本老旧,Hadoop2的中文资料相对较少,本教程的宗旨在于从Hadoop2出发,结合作者在实际工作中的经验,提供一套最新版本的Hadoop2相关教程。
为什么是Hadoop2.2.0,而不是Hadoop2.4.0
本文写作时,Hadoop的最新版本已经是2.4.0,但是最新版本的Hbase0.98.1仅支持到Hadoop2.2.0,且Hadoop2.2.0已经相对稳定,所以我们依然采用2.2.0版本。
一. Hadoop安装(伪分布式)
1. 操作系统
Hadoop一定要运行在Linux系统环境下,网上有windows下模拟linux环境部署的教程,放弃这个吧,莫名其妙的问题多如牛毛。
2. 安装JDK
1> 下载并解压JDK
我的目录为:/home/apple/jdk1.8
2> 配置环境变量
打开/etc/profile,添加以下内容:
export JAVA_HOME=/home/apple/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
执行source /etc/profile ,使更改后的profile生效。
执行以下命令,赋予JDK运行的权限:
chmod 777 /home/apple/jdk1.8/bin/*
chmod 777 /home/apple/jdk1.8/lib/*
3> 检测JDK环境
执行 java –version ,查看结果,如看到版本信息,则表明配置成功。
3. 安装SSH
1> 检验ssh是否已经安装
Ubuntu系统可以通过如下命令来查看ssh是否已经安装:
netstat -an| grep 22
如果已安装,可跳过第二步。
2> 安装ssh
Ubuntu系统可以通过如下命令来安装ssh:
sudo apt-get install ssh
3> 配置ssh免密码登录
通过如下命令来配置ssh免密码登录:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
输入如下命令验证免密码登录是否成功:
ssh localhost
成功登陆,可显示welcome信息。
4. 安装Hadoop
1> 下载并解压
我的目录为:/home/apple/hadoop-2.2.0
2> 配置环境变量
打开/etc/profile,添加以下内容:
export HADOOP_HOME=/home/apple/hadoop-2.2.0
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export YARN_HOME=$HADOOP_HOME
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source /etc/profile ,使更改后的profile生效。
执行以下命令,赋予Hadoop运行的权限:
chmod 777 /home/apple/hadoop-2.2.0/bin/*
chmod 777 /home/apple/hadoop-2.2.0/sbin/*
3> 配置Hadoop
修改$HADOOP_HOME/etc/hadoop目录下的配置文件。
core-site.xml添加以下内容:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
</property>
hadoop-env.sh修改以下内容:
export JAVA_HOME=/home/apple/jdk1.8
hdfs-site.xml添加以下内容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/apple/hadoop-2.2.0/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/apple/hadoop-2.2.0/hdfs/datanode</value>
</property>
这里的两个地址,是你namenode和datanode两个节点上,希望hdfs文件存储的位置。
mapred-site.xml.template改为mapred-site.xml,添加以下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml添加以下内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
4> 启动并验证
用如下命令启动或关闭Hadoop:
start-all.sh
stop-all.sh
如果一切正常,使用jps命令你会看到如下信息:
2499 ResourceManager
2965 Jps
2616 NodeManager
2186 DataNode
2075 NameNode
2363 SecondaryNameNode
2669 JobHistoryServer
访问8088端口可以查看job信息,访问50070端口可以查看namenode信息。