一、Hadoop的安装模式
Hadoop支持的运行模式有3种:
- 本地/独立模式:无须运行任何守护进程,所有程序都在同一个JVM上执行。由于在本机模式下测试和调试MapReduce程序较为方便,因此,这种模式适用于开发阶段。
- 伪分布模式:Hadoop对应Java守护进程都运行在一个物理机器上,模拟一个小规模集群的运行模式
- 全分布模式:Hadoop对应的Java守护进程运行在一个集群上。
二、版本选择
由于大数据今年来的兴起,Hadoop生态系统的产品不断升级改进,造成版本配合上的差异,故在着手搭建之前,选择正确的版本尤为重要。如果应用产品版本见不兼容,需要进行jar包覆盖,参数配置,有些改动较大的功能甚至不能使用。
- Hbase1.2.6(稳定版本)与JDK版本对应表如下图:
- Hbase1.2.6(稳定版本)与Hadoop版本对应表如下图:
注:“S”表示支持,“X”表示不支持,“NT”表示未测试 - Hive2.1.1(稳定版)与JDK版本关系:Hive1.2以上需要Java1.7及以上的JDK版本。
- Hive2.1.1(稳定版)与Hadoop版本关系:首选Hadoop 2.x。(Hadoop 1.x不支持Hive 2.0.0以上版本)。
综上:选择Hbase1.2.6、Hive2.1.1、Hadoop2.6.1来进行Hadoop环境的搭建
三、Hadoop安装先决条件
-
JDK安装。在我之前的文章里有提到
-
Apache安装。Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Sercure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候采取不需要输入密码的形式,故需要配置SSH运用无密码公钥认证的形式,这样NameNode才能使用SSH无密码登录并启动DataNode进程。反之亦然。所以必须安装SSH,并且sshd必须正在运行,这样才能使用管理远程Hadoop守护进程的Hadoop脚本。
如果Hadoop需要安装在集群中,即把整个集群当作一个整体来运行Hadoop平台,还需要如下配置:
-
网络配置:保证集群中机器间的网络通信。
-
时间同步:保证集群中机器间的时间一致。
-
配置机器IP与机器名映射关系。参考这里
四、伪分布安装Hadoop
伪分布安装Hadoop的前置条件在之前的博文里有提到,接下来只需要做如下修改:
1. 安装HDFS:
#下载hadoop
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.6.1/hadoop-2.6.1.tar.gz
tar -zxvf hadoop-2.6.1.tar.gz
echo $JAVA_HOME #查找JAVA_HOME路径,并复制
1.修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
-------------------------------------------------------------------------------
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_191 #修改为JAVA_HOME的路径
--------------------------------------------------------------------------------
2.修改core-site.xml
cd /usr/local/hadoop/
mkdir data
cd data
mkdir tmp
---------------------------------------------------------------------------------
<configuration>
<property>
<name>fs.defaultFS</name> #指定namenode的通信地址
<value>hdfs://zoo-1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name> #指定运行中产生数据的存放目录
<value>/usr/local/hadoop/data/tmp/</value>
</property>
</configuration>
---------------------------------------------------------------------------------
3.修改hdfs-site.xml
--------------------------------------------------------------------------------
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 伪分布式备份数量为1 -->
</property>
</configuration>
---------------------------------------------------------------------------------
2. 执行下列命令
格式化namenode: bin/hdfs namenode -format
启动文件系统:两个进程namenode(存储元数据)datanode(存储数据): sbin/start-dfs.sh
查看进程: jps
进程启动成功如图:
如果遇到进程启动失败的情况,则进入/usr/local/hadoop/logs/进行查看
此时可通过web界面,监控文件系统。在浏览器输入:
http:10.1.2.74:50070(修改为自己的IP)
如图:
目录/usr/local/hadoop/data/tmp/dfs/data/current/存储的是HDFS中插入的数据 。
3. 安装YARN
修改/usr/local/hadoop/etc/hadoop/mapred-site.xml.template文件名为mapred-site.xml
1.修改mapred-site.xml
--------------------------------------------------------------------------------
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 指定MapReduce作业在YARN模式下运行 -->
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://zoo-1:8021</value>
</property>
</configuration>
--------------------------------------------------------------------------------
2.修改yarn-site.xml
--------------------------------------------------------------------------------
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
--------------------------------------------------------------------------------
4. 执行下列命令
启动yarn: sbin/start-yarn.sh
查看进程: jps
启动成功如图所示:
进入web界面查看yarn的监控界面,输入:http:10.1.2.74:8088(换成自己的IP),如图:
五、测试Hadoop环境
1.创建测试数据
mkdir /usr/home/data
vim words #创建words文件
#添加如下内容
-----------------
hello a
hello b
-----------------
2.要做词频统计,hadoop中已经写好了方法,我们需要把测试数据传入HDFS。
#“/usr/home/data/words”为输入文件,“/words”为HDFS中文件的路径
bin/hadoop fs -put /usr/home/data/words /words
此时可以在HDFS的监控页面查看该文件的信息。
点击该文件可进行下载,但此时下载失败,因为无法识别主机名zoo-1。所以需要配置windows的hosts。
修改C:\Windows\System32\drivers\etc\hosts
添加内容:10.1.2.74 zoo-1
此时即可成功下载。
3.运行demo
#/words是文件源路径,/out是输出文件路径
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.1.jar wordcount /words /out
#查看文件
bin/hadoop fs -ls /
#查看out文件
bin/hadoop fs -ls /out
#查看计算结果
bin/hadoop fs -cat /out/part-r-00000
六、简单分析MapReduce的计算过程