Hadoop环境搭建

Hadoop通常有三种运行模式:本地(独立)模式、伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式。

简介

安装完成后,Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且其也不会启动任何Hadoop守护进程,Map和Reduce任务都作为同一进程的不同部分来执行。
因此,本地模式下的Hadoop仅运行于本机。此模式仅用于开发或调试MapReduce应用程序但却避免了复杂的后续操作。伪分布式模式下,Hadoop将所有进程运行于同一台主机上,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。
同时,由于伪分布式的Hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。要真正发挥Hadoop的威力,就得使用完全分布式模式。
由于ZooKeeper实现高可用等依赖于奇数法定数目(an odd-numbered quorum),因此,完全分布式环境需要至少三个节点

环境

部署环境

主机名称 IP 系统
Master 192.168.2.79 centos6.5
Slave 192.168.2.78 cenros6.5
Slave1 192.168.2.77 cenros6.5

域名解析和关闭防火墙 (所有机器上)

/etc/hosts
192.168.2.79 master
192.168.2.78 slave
192.168.2.78 slave1

关闭 selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0

防火墙开放iptables
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-A INPUT -p tcp -s 192.168.2.0/24 -j ACCEPT

配置所有机器ssh互信

创建密匙(每台都配置)

[root@master ~]# ssh-keygen -t  rsa

复制密匙(每台都配置)

[root@master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub master
[root@master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub slave
[root@master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub slave1

安装jdk和配置环境变量(三台同样配置)

[root@master ~]#  rpm -ivh jdk-8u91-linux-x64.rpm   #安装jdk
Preparing... ########################################### [100%]
1:jdk1.8.0_91 ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...
[root@master ~]# vim /etc/profile #设置java环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_91
export JRE_HOME=/usr/java/jdk1.8.0_91/jre
export PATH=$PATH:$JAVA_HOME:$JRE_HOME
[root@master ~]# java -version #查看java变量是否配置成功
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

安装并配置hadoop

安装Hadoop并配置环境变量(master上)

[root@master ~]# mkdir -p /web/soft
[root@master ~]# mkdir -p /web/soft/hdfs/name /web/soft/hdfs/data /web/soft/hdfs/tmp
[root@master ~]# cd /web/soft/ #上传hadoop压缩包到此文件夹
[root@master ~]# tar xf hadoop-2.6.5.tar.gz && mv hadoop-2.6.5 hadoop
[root@master ~]# vim / etc/profile #增加环境变量
export PATH=$PATH:/web/soft/hadoop/bin

修改以下配置文件(所有文件均位于/web/soft/hadoop/etc/hadoop路径下)

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_91 #将JAVA_HOME改为固定路径
export HADOOP_CONF_DIR=/web/soft/hadoop/etc/hadoop

core-site.xml

<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/Hadoop/tmp</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave:50090</value>
</property>
<!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/Hadoop/name</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/Hadoop/data</value>
</property>
</configuration>

mapred-site.xml

[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

yarn-site.xml

<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

<!-- reducer取数据的方式是mapreduce_shuffle -->
<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>
</configuration>

masters

slave  #这里指定的是secondary namenode 的主机

slaves

slave
slave1

复制Hadoop安装目录及环境配置文件到其他主机

master上:

[root@master ~]# cd /web/soft
[root@master ~]# scp -r /web/soft/hadoop slave:/web/soft
[root@master ~]# scp -r /web/soft/hadoop slave1:/web/soft

启动Hadoop

格式化名称节点(master)

[root@master local]# hdfs namenode -format
18/04/22 12:34:23 INFO common.Storage: Storage directory /Hadoop/name has been successfully formatted. #这行信息表明对应的存储已经格式化成功。
18/04/22 12:34:23 INFO namenode.FSImageFormatProtobuf: Saving image file /Hadoop/name/current/fsimage.ckpt_0000000000000000000 using no compression
18/04/22 12:34:24 INFO namenode.FSImageFormatProtobuf: Image file /Hadoop/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
18/04/22 12:34:24 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/04/22 12:34:24 INFO util.ExitUtil: Exiting with status 0
18/04/22 12:34:24 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.1.250
************************************************************/

启动

[root@master ~# cd /web/soft/hadoop/sbin
[root@master ~# ./start-all.sh

master上

[root@master sbin]# jps|grep -v Jps
3746 ResourceManager
3496 NameNode

slave上

[root@slave1 ~]#  jps|grep -v Jps
3906 DataNode
4060 NodeManager
3996 SecondaryNameNode

Slave1上

[root@slave2 ~]# jps|grep -v Jps
3446 NodeManager
3351 DataNode

测试

查看集群状态

[root@master sbin]# hdfs dfsadmin -report

测试YARN

可以访问YARN的管理界面,验证YARN,如下图所示:

http://ip:8088/cluster

测试向hadoop集群系统创建一个目录并上传一个文件

[root@master ~#  hdfs dfs -mkdir -p /Hadoop/test
[root@master ~]# hdfs dfs -put install.log /Hadoop/test
[root@master ~]# hdfs dfs -ls /Hadoop/test
Found 1 items
-rw-r--r-- 2 root supergroup 28207 2018-04-22 16:48 /Hadoop/test/install.log

本文转载来自 [http://yangxx.net/?p=2545]

文章作者: 陈 武
文章链接: http://www.updatecg.xin/2018/06/20/Hadoop环境搭建/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的学习记录
打赏
  • 微信
  • 支付寶

评论