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. flume中HdfsSink参数说明

    flume到hdfsSink: type hdfs path 写入hdfs的路径,需要包含文件系统标识,比如:hdfs://namenode/flume/webdata/ 可以使用flume提供的日期 ...

  2. [数据结构]最小生成树算法Prim和Kruskal算法

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树.  例如,对于如上图G4所示的连通网可以有多棵权值总 ...

  3. sqoop 从sqlserver2008 导入数据到hadoop

    今天终于开始上手导入数据到hadoop了,哈哈,过程蛮崎岖的,和官方文档的还不太一样. OK,let's go!试验对象是我第一个名为ST_Statistics的一张表,我要把我表里的数据导入到hdf ...

  4. git基本操作:使用git将本地代码上传到GitHub

    一.创建github repository(仓库) 1.登录GitHub 创建GitHub仓库,首先需要登录GitHub,GitHub网址:https://github.com.如果没有GitHub账 ...

  5. spring sringboot 加载配置文件 多目录配置文件 多级分类配置文件

    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = ...

  6. springcloud服务已经关但是Eureka还是显示up

    该状态持续很久,访问该服务也返回错误,但在注册中心界面,该服务却一直存在,且为UP状态,并且在大约十分钟后,出现一行红色大字:EMERGENCY! EUREKA MAY BE INCORRECTLY ...

  7. WaitForSingleObject函数的使用

    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.  WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hOb ...

  8. Redis 实现消息队列 MQ

    Redis 2.4版本之后就内置队列的功能了,如果是日常比较简单的队列应用,可以选择Redis , 效率还很高的!! Redis 还能实现 有序 和 无序 两种队列(只讨论生产者和消费者这种模式的队列 ...

  9. Ubuntu16.04安装Mininet

    Ubuntu16.04源码安装Mininet 本文介绍了VMware虚拟机ubuntu16.04中安装Mininet的方法,物理机中的方法与之相同.主要参考了Mininet官方的教程.官方提供了四种安 ...

  10. phpc.sinaapp.com 加密的解密方法

    很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了. http://www.cnblogs.com/lonelyxmas/p/458285 ...