Hadoop教程(五)Hadoop分布式集群部署安装

1 Hadoop分布式集群部署安装

在hadoop2.0中通常由两个NameNode组成,一个处于active状态,还有一个处于standby状态。

Active
NameNode对外提供服务,而Standby NameNode则不正确外提供服务,仅同步activenamenode的状态,以便可以在它失败时高速进行切换。

hadoop2.0官方提供了两种HDFS
HA的解决方式。一种是NFS,还有一种是QJM。

这里我们使用简单的QJM。

在该方案中。主备NameNode之间通过一组JournalNode同步元数据信息。一条数据仅仅要成功写入多数JournalNode即觉得写入成功。通常配置奇数个JournalNode

这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自己主动切换Standby
NameNode为standby状态。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

1.1 Hadoop分布式集群工作原理图

1.2 集群规划

主机名

IP

安装软件

执行进程

Hadoop1

192.168.1.121

Jdk、Hadoop

NameNode、DFSZKFailoverController

Hadoop2

192.168.1.122

Jdk、Hadoop

NameNode、DFSZKFailoverController

Hadoop3

192.168.1.123

Jdk、Hadoop

ResourceManager

Hadoop4

192.168.1.124

Jdk、Hadoop、Zookeep

DataNode、NodeManager、JournalNode、QuorumPeerMain

Hadoop5

192.168.1.125

Jdk、Hadoop、Zookeep

DataNode、NodeManager、JournalNode、QuorumPeerMain

Hadoop6

192.168.1.126

Jdk、Hadoop、Zookeep

DataNode、NodeManager、JournalNode、QuorumPeerMain

1.3 相关下载

1、JDK下载地址:jdk-8u66-linux-x64.tar.gz

Linux安装JDK及环境变量配置,參见:http://blog.csdn.net/yuan_xw/article/details/49948285

2、Hadoop下载:hadoop-2.7.1.tar.gz

3、Zookeeper下载:zookeeper-3.4.5.tar.gz

1.4 配置hosts文件

配置Hadoop1server,运行命令:vi
/etc/hosts

127.0.0.1    localhost

192.168.1.121   Hadoop1

192.168.1.122   Hadoop2

192.168.1.123   Hadoop3

192.168.1.124   Hadoop4

192.168.1.125   Hadoop5

192.168.1.126   Hadoop6

其他服务scp命令进行复制:

scp /etc/hosts192.168.1.122:/etc/

scp /etc/hosts192.168.1.123:/etc/

scp /etc/hosts192.168.1.124:/etc/

scp /etc/hosts 192.168.1.125:/etc/

scp /etc/hosts 192.168.1.126:/etc/

1.5 配置ssh免password登录

产生密钥。运行命令:ssh-keygen-t rsa,按4回车。密钥文件位于~/.ssh文件

在Hadoop1上生产一对钥匙。将公钥复制到其它节点,包含自己,运行命令:

ssh-copy-idHadoop1

ssh-copy-idHadoop2

ssh-copy-idHadoop3

ssh-copy-idHadoop4

ssh-copy-idHadoop5

ssh-copy-idHadoop6

在Hadoop3上生产一对钥匙,配置Hadoop3到Hadoop4、Hadoop5、Hadoop6的免password登陆,运行命令:

产生密钥,运行命令:ssh-keygen-t rsa,按4回车,密钥文件位于~/.ssh文件,将公钥复制到其它节点

ssh-copy-idHadoop4

ssh-copy-idHadoop5

ssh-copy-idHadoop6

在Hadoop2上生产一对钥匙,两个namenode之间要配置ssh免password登陆。运行命令:

产生密钥。运行命令:ssh-keygen-t rsa,按4回车。密钥文件位于~/.ssh文件,将公钥复制到其它节点

ssh-copy-id -iHadoop1

1.6 关闭防火墙

1、关闭防火墙:

安装iptables-services命令:

systemctl stop firewalld.service     #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

验证:firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

关闭防火墙自己主动执行:

运行命令:systemctl disable iptables.service

验证:systemctl list-unit-files |grep iptables

用上述相同的方法在Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6中如法炮制就可以。

1.7 上传server

Hadoop1server创建/usr/local/software/package文件夹后,再进行上传:

解压JDK:

运行命令:tar -zxvfjdk-8u66-linux-x64.tar.gz  -C /usr/local/software/

解压:Hadoop:

运行命令:tar -zxvfhadoop-2.7.1.tar.gz 
-C /usr/local/software/

重命名:mv hadoop-2.7.1/ hadoop_2.7.1/

Hadoop4server创建/usr/local/software/package文件夹后,再进行上传:

解压Zookeeper:

运行命令:tar -zxvfzookeeper-3.4.5.tar.gz  -C /usr/local/software/

重命名:mv zookeeper-3.4.5zookeeper_3.4.5

在server节点(Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6),创建/usr/local/software文件夹。

解压完后成后,分别在Hadoop1、Hadoop4删除/usr/local/software/package文件夹:

运行命令:rm -rf/usr/local/software/package/

1.8 改动配置文件(Hadoop1):

2、改动hadoop-env.sh配置文件:

运行命令:

vi /usr/local/software/hadoop_2.7.1/etc/hadoop/hadoop-env.sh

改动内容:

export JAVA_HOME=/usr/local/software/jdk1.8.0_66

3、改动core-site.xml配置文件:

运行命令:

vi /usr/local/software/hadoop_2.7.1/etc/hadoop/core-site.xml

改动内容:

    <configuration>
        <!--指定hdfs的nameService1节点URL地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://ns1</value>
        </property>
    
        <!-- Hadoop的执行时文件存放路径,假设不存在此文件夹须要格式化 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/software/hadoop_2.7.1/tmp</value>
        </property>
    
        <!-- Zookeeper地址 -->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>Hadoop4:2181,Hadoop5:2181,Hadoop6:2181</value>
        </property>
    </configuration>

4、改动hdfs-site.xml配置文件:

运行命令:

vi /usr/local/software/hadoop_2.7.1/etc/hadoop/hdfs-site.xml

改动内容:

    <configuration>
        <!--指定hdfs的nameservice为ns1。须要和core-site.xml中的保持一致 -->
        <property>
            <name>dfs.nameservices</name>
            <value>ns1</value>
        </property>
        <!-- ns1以下有两个NameNode,各自是nn1,nn2 -->
        <property>
            <name>dfs.ha.namenodes.ns1</name>
            <value>nn1,nn2</value>
        </property>
        <!-- nn1的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.ns1.nn1</name>
            <value>Hadoop1:9000</value>
        </property>
        <!-- nn1的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.ns1.nn1</name>
            <value>Hadoop1:50070</value>
        </property>
        <!-- nn2的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.ns1.nn2</name>
            <value>Hadoop2:9000</value>
        </property>
        <!-- nn2的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.ns1.nn2</name>
            <value>Hadoop2:50070</value>
        </property>
        <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://Hadoop4:8485;Hadoop5:8485;Hadoop6:8485/ns1
            </value>
        </property>
        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/itcast/hadoop-2.2.0/journal</value>
        </property>
        <!-- 开启NameNode失败自己主动切换 -->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>
        <!-- 配置失败自己主动切换实现方式 -->
        <property>
            <name>dfs.client.failover.proxy.provider.ns1</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
            </value>
        </property>
        <!-- 配置隔离机制方法。多个机制用换行切割,即每一个机制暂用一行 -->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>
                sshfence
                shell(/bin/true)
            </value>
        </property>
        <!-- 使用sshfence隔离机制时须要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/root/.ssh/id_rsa</value>
        </property>
        <!-- 配置sshfence隔离机制超时时间 -->
        <property>
            <name>dfs.ha.fencing.ssh.connect-timeout</name>
            <value>30000</value>
        </property>
    </configuration>

5、改动mapred-site.xml配置文件:

运行命令:

切换文件夹:cd /usr/local/software/hadoop_2.7.1/etc/hadoop/

重命名:mv mapred-site.xml.template  mapred-site.xml

改动文件:vi mapred-site.xml

改动内容:

    <configuration>
        <!-- 指定Hadoop的MapReduce执行在YARN环境 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

6、改动yarn-site.xml配置文件:

运行命令:

vi /usr/local/software/hadoop_2.7.1/etc/hadoop/yarn-site.xml

改动内容:

	<configuration>
<!--指定YARN的master节点( ResourceManager) 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Hadoop3</value>
</property> <!-- NodeManager获取数据方式:shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

7、改动slaves配置文件:

运行命令:

vi /usr/local/software/hadoop_2.7.1/etc/hadoop/slaves

Hadoop4

Hadoop5

Hadoop6

1.9 环境变量

1、Hadoop1改动profilie文件:运行命令:vi/etc/profile

export JAVA_HOME=/usr/local/software/jdk1.8.0_66

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/software/hadoop_2.7.1

export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

2、Hadoop1拷贝文件到server:Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6

Hadoop1复制JDK:

scp -r  /usr/local/software/Hadoop2:/usr/local/

scp -r  /usr/local/software/ Hadoop3:/usr/local/

scp -r  /usr/local/software/ Hadoop4:/usr/local/

scp -r  /usr/local/software/ Hadoop5:/usr/local/

scp -r  /usr/local/software/ Hadoop6:/usr/local/

3、Hadoop1复制环境变量:Hadoop2、Hadoop3

scp /etc/profile Hadoop2:/etc/

scp /etc/profile Hadoop3:/etc/

4、Hadoop4改动profilie文件:运行命令:vi/etc/profile

export JAVA_HOME=/usr/local/software/jdk1.8.0_66

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/software/hadoop_2.7.1

export ZOOKEEPER_HOME=/usr/local/software/zookeeper_3.4.5

export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

5、Hadoop4拷贝文件到server:Hadoop5、Hadoop6

Hadoop1复制zookeeper:

scp -r zookeeper_3.4.5/Hadoop5:/usr/local/software/zookeeper_3.4.5/

scp -r zookeeper_3.4.5/ Hadoop6:/usr/local/software/zookeeper_3.4.5/

6、Hadoop4复制环境变量:
Hadoop5、Hadoop6

scp /etc/profile Hadoop5:/etc/

scp /etc/profile Hadoop6:/etc/

7、在Hadoop1、Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6。分别刷新环境变量

运行命令:source /etc/profile   刷新环境变量

1.10 Zookeeper集群配置:

1、改动zoo.cfg文件:

运行命令:

cd /usr/local/software/zookeeper_3.4.5/conf

mv zoo_sample.cfgzoo.cfg

改动内容。运行命令:vi zoo.cfg:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/software/zookeeper_3.4.5/data

clientPort=2181

server.4 = Hadoop4:2888:3888

server.5 = Hadoop5:2888:3888

server.6 = Hadoop6:2888:3888

 

2、server标识配置

创建目录:mkdir data。

创建文件myid并填写内容为4:vi
myid (内容为server标识:4)。

把Hadoop5、Hadoop6中的myid文件中的值改动为5和6路径(vi
%ZOOKEEPER_HOME%/data/myid)。

依照同样的步骤,为其他机器都配置上zoo.cfg和myid文件。

1.11 启动Zookeeper:

分别在Hadoop4、Hadoop5、Hadoop6server上启动zookeeper:

Hadoop4运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start      #启动zookeeper

Hadoop5运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start      #启动zookeeper

Hadoop6运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start      #启动zookeeper

Hadoop4运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status     #查看启动状态

Hadoop5运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status     #查看启动状态

Hadoop6运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status     #查看启动状态

1.12 启动journalnode:

在Hadoop1上启动全部journalnode。注意:是调用的hadoop-daemon.sh这个脚本:

Hadoop4运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode     #启动journalnode

Hadoop5运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode     #启动journalnode

Hadoop6运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode     #启动journalnode

1.13 格式化文件系统:

在Hadoop1server上进行:HDFS文件系统进行格式化,运行命令:

# hadoop namenode –formate(已过时)

hdfs namenode -format推荐使用

验证:提演示样例如以下信息表示成功:

INFO common.Storage: Storage directory/usr/local/software/hadoop_2.7.1/tmp/dfs/name has been successfully formatted.

Hadoop的执行时文件存放路径为:tmp文件夹,Hadoop2须要和Hadoop1一致,进行拷贝:

运行命令:scp -r/usr/local/software/hadoop_2.7.1/tmp Hadoop2:/usr/local/software/hadoop_2.7.1/

1.14 格式化formatZK:

仅仅须要在Hadoop1上进行运行命名就可以:

运行命令:hdfs zkfc -formatZK

验证:

打开Hadoop4serverzookeeperclient,查看是否存在hadoop-ha节点

运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkCli.sh

查看节点命令:ls
 /

1.15 启动HDFS:

1、仅仅须要在Hadoop1上启动HDFS,

运行命令:/usr/local/software/hadoop_2.7.1/sbin/start-dfs.sh

验证启动HDFS:

Jps:JDK提供查看当前java进程的小工具。

NameNode:它是Hadoop中的主server,管理文件系统名称空间和对集群中存储的文件的訪问。

DFSZKFailoverController会定期通过该rpc调用proxy.monitorHealth()来监測NN的健康状况。

1.16 启动YARN:

1、仅仅须要在Hadoop3上启动YARN,

运行命令:/usr/local/software/hadoop_2.7.1/sbin/start-yarn.sh

2、验证启动YARN:

Jps:JDK提供查看当前java进程的小工具。

ResourceManager:接收client任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)。

1.17 訪问Hadoop服务页面:

訪问地址验证启动服务。訪问地址:

HDFS管理界面:http://192.168.1.121:50070/

YARN管理界面:http://192.168.1.123:8088/

1.18 验证HDFS - HA主备切换:

1、验证Hadoop1serverNameNode和Hadoop2serverNameNode数据文件能否够共享:

在Hadoop1上传文件hosts文件:

运行命令:hadoop fs-put /etc/hosts /

杀掉Hadoop1 NameNode进程。运行命令:

查看进程:jps

Kill -9 6068

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

验证成功

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2、启动Hadoop1上的NameNode进程。将Hadoop2server进行强制关机,验证能否够激活Hadoop1:

启动Hadoop1serverNameNode进程:

运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart namenode

将Hadoop2服务进行关机处理:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

主备切换对照图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

--以上为《Hadoop教程(五)Hadoop分布式集群部署安装》,如有不当之处请指出。我兴许逐步完好更正。大家共同提高。

谢谢大家对我的关注。

——厚积薄发(yuanxw)

Hadoop教程(五)Hadoop分布式集群部署安装的更多相关文章

  1. Hadoop(五)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

  2. Hadoop(HA)分布式集群部署

    Hadoop(HA)分布式集群部署和单节点namenode部署其实一样,只是配置文件的不同罢了. 这篇就讲解hadoop双namenode的部署,实现高可用. 系统环境: OS: CentOS 6.8 ...

  3. Hadoop分布式集群部署(单namenode节点)

    Hadoop分布式集群部署 系统系统环境: OS: CentOS 6.8 内存:2G CPU:1核 Software:jdk-8u151-linux-x64.rpm hadoop-2.7.4.tar. ...

  4. hadoop分布式集群部署①

     Linux系统的安装和配置.(在VM虚拟机上) 一:安装虚拟机VMware Workstation 14 Pro 以上,虚拟机软件安装完成. 二:创建虚拟机. 三:安装CentOS系统 (1)上面步 ...

  5. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程

    超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...

  6. solr 集群(SolrCloud 分布式集群部署步骤)

    SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux ...

  7. SolrCloud 分布式集群部署步骤

    https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...

  8. Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  9. HBase HA的分布式集群部署(适合3、5节点)

    本博文的主要内容有: .HBase的分布模式(3.5节点)安装    .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动    .H ...

随机推荐

  1. 常用css3技巧

    H5移动前端开发常用高能css3汇总   1.禁止a标签点击高亮,这些都是非官方属性,但实用性超强   html,body{ -webkit-touch-callout: none; //禁止或显示系 ...

  2. 删除json对象中空值

    function deleteEmptyProperty(obj){ var object = obj; for (var i in object) { var value = object[i]; ...

  3. 在windows下实时监控、接受文件变化小工具

    在windows下实时监控文件变化小工具   在测试的时候,我们可能想实时监控系统打出的log信息,在unix系统上我们可以用"tail -f"实现,在windows下一般就无法做 ...

  4. Lucene增删改查

    IndexManager.java package com.witwicky.lucene; import java.io.File; import java.util.ArrayList; impo ...

  5. Casual Note of Computer Network

    20170605 本地环回地址(loopback): IPV4:127.0.0.1-127.255.255.254 IPV6:::1 (即 0000:0000:0000:0000:0000:0000: ...

  6. sparkR集群启动脚本的封装。

    sparkR默认是以单机方式运行的.实现sparkR的集群启动,需要指定master地址,占用内存.CPU,及UI端口等,这对分析人员来说是比较麻烦的. 如何实现对其启动的封装,方便分析人员来使用: ...

  7. Ubuntu 安装软件方法

    Ubuntu软件安装有几种方式,常用的是deb包的安装方式,deb是debian系列的Linux包管理方式,Ubuntu软件安装属于debian的派生,也默认支持这种软件安装方式,当下载到一个deb格 ...

  8. 实现接口时@Override注解问题

      用IntelliJ 15打开一个以前的工程,发现代码出现很多关于@Override的错误,编辑器提示:“@Override is not allowed when implementing int ...

  9. 使用Selenium来抓取动态加载的页面

    原文:http://my.oschina.net/flashsword/blog/147334?p=1 一般的爬虫都是直接使用http协议,下载指定url的html内容,并对内容进行分析和抽取.在我写 ...

  10. Linux系统中如何校验SHA1和MD5?

    来自:系统之家:http://www.xitongzhijia.net/xtjc/20160316/69125.html 我们在网络上下载或在U盘中复制的文件正常来说和源文件是一样的,但有时在下载或拷 ...