您的位置:首页 > 运维架构 > 网站架构

hadoop2.5.2的本地模式、伪分布式集群、分布式集群和HDFS系统的高可用的环境搭建

2017-03-19 12:32 916 查看

1.准备环境(JDK和Hadoop)

$ tar -zxf hadoop-2.5.2.tar.gz -C /opt/app/


// 卸载Linux自带java,安装jdk1.8,hive只支持1.7以上版本

$ rpm -qa|grep java

$ rpm -e --nodeps java的各项文件

2.环境配置

     在hadoop安装目录下的 etc/hadoop/hadoop-env.sh 配置一下环境

通过Notepad的Nppftp远程链接进行编辑


$ vi /opt/app/etc/hadoop/hadoop-env.sh


配置JDK环境

# set to the root of your Java installation

export JAVA_HOME=/usr/java/latest


配置hadoop安装目录(此项可以不用高配置)

# Assuming your installation directory is /usr/local/hadoop

export HADOOP_PREFIX=/usr/local/hadoop

3.启动HDFS的三种模式(本地模式,伪分布,分布式)

3.1Local (Standalone) Mode 本地模式

通常作为一个Java使用,对于debug非常有用,演示实例统计程序可以通过touch一个文件插入数据重新进行统计。

# 创建一个input文件夹备份未修改过的xml文件

$ mkdir input

$ cp etc/hadoop/*.xml input

# 执行hadoop 下的一个example的jar包

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+'

# 查看输出结构

$ cat output/*

3.2 Pseudo-Distributed Mode伪分布式模式

etc/hadoop/core-site.xml:
<configuration>

// 修改hdfs文件系统位置
<property>

<name>fs.defaultFS</name>

<value>hdfs://localhost:9000</value>

</property>

// 配置hadoop临时文件夹位置,便于系统管理
// 以后再执行bin/hdfs namenode -format 错误时,删除此文件目录下的dfs文件
<property>

<name>hadoop.tmp.dir</name>

<value>/opt/app/hadoop-2.5.2/data/tmp</value>

</property>

</configuration>

etc/hadoop/hdfs-site.xml:
<configuration>

// 配置本地文件副本数
<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

另外需要配置ssh无秘钥登录,方便每次各主机之间进行访问时
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

// 测试无秘钥登录是否成功
$ ssh localhost

运行集群 - 格式化文件系统
// 多次文件格式的时候,删除hadoop.tmp.dir的文件,防止报错  

$ bin/hdfs namenode -format

- 启动hdfs
// 配有SSH无秘钥启动的方式启动  

$ sbin/start-dfs.sh

// 也可以用一下方式启动

$ sbin/hadoop-daemon.sh start namenode

$ sbin/hadoop-daemon.sh start datanode

$ sbin/hadoop-daemon.sh start secondarynode(在伪分布式集群中,没必要不启动)

- 启动hdfs以后hadoop将自动在logs下创建日志- 我么也可以在其WEB网页 查看NameNode信息:http://localhost:50070/注意:若在Linux客户端通过JPS文件查看若存在进场50070无法打开的时,应查看系统及Linucx虚拟机防火墙是否进行关闭运行MapReduce任务
$ bin/hdfs dfs -mkdir  -p /user/huangxc/

// 将本地文件上传到hdfs系统上

$ bin/hdfs dfs -put etc/hadoop input user/huangxgc/

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep /user/huangxc/input /user/huangxc/inputoutput 'dfs[a-z.]+
'
// 将output文件下载到本地文件
$ bin/hdfs dfs -get output output

// 查看结果

$ cat output/*

$ bin/hdfs dfs -cat output/*

// 关闭hdfs系统

$ sbin/stop-dfs.sh


4.YARN on Single Node

- MapReduce运行在分布式的系统上。      a mapred-env.sh 配置${JAVA_HOME}(可以不用配置)
       b.将etc/hadoop/mapred-site.xml.tmplate后缀去掉etc/hadoop/mapred-site.xml
<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

c.etc/hadoop/yarn-env.xml:(可以不用配置)
# some Java parameters

export JAVA_HOME=/opt/modules/jdk1.8.0_121


d.etc/hadoop/yarn-site.xml:


<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>


<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop.com</value>

</property>

</configuration>

运行YARN 
# 运行yarn

$ sbin/start-yarn.sh

#运行mapreduce程序

# 由于输出目录不能存在,所以要先将原输出目录和文件删除
$ bin/hdfs -rm -R
/user/huangxc/output
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep /user/huangxc/input /user/huangxc/output 'dfs[a-z.]+
'
# 查看输出文件信息
$ bin/hdfs -dfs -cat /user/huangxc/output
# 关闭yarn
$ sbin/stop-yarn.sh

YARN的ResourceMananger同NameNode一样,有WEB界面:ResourceManager - http://localhost:8088/
----------------------------------------------------------------------------------------------------------------------------5.搭建分布式集群操作
- 规划分布式集群的集群与服务
   1.设置集群是基于前SingleNode的配置上进行配置
   2.集群采用使用三台虚拟机进行搭建,主机地址分别为hadoo.com、hadoop02.com、hadoop03.com,集群IP地址设置在同一网段    3.确保每台虚拟机防火墙均进行了关闭,后面很多路由会无法连接报错
分布式集群机群规划
 hadoop.com
 
 hadoop02.com
 
 hadoop03.com
 
配置文件
HDFS系统hadoop-env.shcore-site.xmlhdfs-site.xmlslaves
NameNode  
DataNodeDataNodeDataNode
  SeconaryNameNode
YARN系统yarn-env.shyarn-site.shslaves
 RescourceMannager 
nodeManagerNodeManagerNodeManager
MapReduce系统mapred-env.shmarred-site.xml
JobHistoryServer  

5.1 HDFS系统配置

hadoop-env.sh 配置&{JAVA_HOME}jdk路径(上边已配置)

core-site.xml 配置hdfs地址  fs.defaultFS、临时文件路径hadoop.tmp.dir ,(上边已配置)  
etc/hadoop/core-site.xml

hdfs-site.xml 配置副本数 默认为3 (删除原单节点配置,或将value改为3)
配置SeconaryNameNode地址
<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop03.com:50090</value>

</property>


etc/hadoop/slaves

hadoop.com

hadoop02.com

hadoop03.com

5.2 YARN系统配置

- yarn-env.sh jdk路径
- yarn-site.sh
<property>	

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

// ResourceManager地址

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop02.com</value>

</property>


slaves 同上公用slaves文件

5.3 MapReduce系统配置

marred-site.xml jdk路径
marred-site.xml 、(mapreduce.framework.name单节点已经配置)
<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop.com:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop.com:19888.</value>

</property>

5.4 将hadoop.com的分发给其他主机 - 配置不同主机之间的无秘钥登录,避免访问重复登录输入密码:
ssh-copy-id hadoop02.com

ssh-copy-id hadoop03.com

 - 将文件分发给不同的主机
$ scp -r hadoop2.5.2/ huangxc@hadoop02.com:/opt/app/

$ scp -r hadoop2.5.2/ huangxc@hadoop03.com:/opt/app/

6.运行集群    6.1 启动HDFS 准备文件系统
$ bin/hdfs dfs namenode -format

$ sbin/strat-dfs.sh

// 启动yarn时,因为resourcemannager在hadoop02.com上运行,所以在hadoop02.com上运行启动,不易报错

$ sbin/strat-yarn.sh


7 .HDFS High Availability Using the Quorum Journal Manager  高可用性的HDFS 

在搭建高可用性的HDFS之前,需要搭建apache的协作框架 。ZooKeeper™安装并按照如下配置conf/zoo.cfg。zookeeper.最好单数个并且在dataDir目录下创建myid并填上所属Server的编号数字

Running Replicated ZooKeeper

tickTime = 2000

dataDir = / var / lib / zookeeper

clientPort = 2181

initLimit = 5

syncLimit = 2

server.1 = hadoop.com:2888:3888

server.2 =hadoop02.com:2888:3888

server.3 = hadoop03.com:2888:3888

 hdfs-site.xml 
高可用的HDFS系统规划
 hadoop.com
 
 hadoop02.com
 
 hadoop03.com
 
配置文件
HDFS系统hadoop-env.shcore-site.xmlhdfs-site.xmlslaves
NameNodeNameNode 
DataNodeDataNodeDataNode
journalnodejournalnodejournalnode
ZooKeeper
zookeeperzookeeperzookeeperzoo.cfg
<property>

<name>dfs.nameservices</name>

<value>ns1</value>

</property>


<property>

<name>dfs.ha.namenodes.mycluster</name>

<value>nn1,nn2</value>

</property>


<property>

<name>dfs.namenode.http-address.mycluster.nn1</name>

<value>machine1.example.com:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn2</name>

<value>machine2.example.com:50070</value>

</property>

<property>

<name>dfs.namenode.rpc-address.mycluster.nn1</name>

<value>machine1.example.com:8020</value>

</property>


<property>

<name>dfs.namenode.rpc-address.mycluster.nn2</name>

<value>machine2.example.com:8020</value>

</property>


<property>

<name>dfs.namenode.http-address.mycluster.nn1</name>

<value>machine1.example.com:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn2</name>

<value>machine2.example.com:50070</value>

</property>


<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster</value>

</property>


<name>dfs.client.failover.proxy.provider.mycluster</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>


property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>



<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/exampleuser/.ssh/id_rsa</value>

</property>


<property>

<name>dfs.journalnode.edits.dir</name>

<value>/path/to/journal/node/local/data</value>

</property>

 core-site.xml
<property>

<name>fs.defaultFS</name>

<value>hdfs://ns1</value>

</property>

QJM HA 启动1.在各个JournalNode 节点上,输入以下命令启动journalnode服务:
sbin/hadoop-daemon.sh start namenode

2.在 nn1 上,对其hdfs进行格式化,并启动namenode:
sbin/hadoop-daemon.sh start namenode

3.在nn2 上,同步nn1的元数据信息
bin/hdfs namenode -bootstrapStandby

4.启动nn2
sbin/hadoop-daemon.sh start datanode

5.将nn1切换为Active状态
bin/hdfs haadmin -transitionToActive nn1

6.在nn1上启动素有datanode
sbin/hadoop-daemon.sh start datanode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息