1.服务器设置

集群规划

Namenode-Hadoop管理节点

10.25.24.92

10.25.24.93

Datanode-Hadoop数据存储节点

10.25.24.89

10.25.24.90

10.25.24.91

Zookeeper—高可用推举机制

1-    标识需要安装

NN-namenode

DN-datanode

服务器名

NN

DN

ZK

10.25.24.92

jyh-zhzw-inline-25

1

1(1)

10.25.24.93

jyh-zhzw-inline-26

1

 

1(2)

10.25.24.91

jyh-zhzw-inline-24

1

1(5)

1.1 设置hostname

用root用户

重启网络服务

2.设置ssh免密登录

ssh-keygen -t rsa

ssh-keygen -m PEM -t rsa

(这个是生成PEM的模式)

这里重新设置免密登录

获取到公钥文件之后,复制所有公钥到一个文件,然后分发到各个服务器

cat id_rsa.pub > authorized_keys

设置文件权限,authoriz.. 必须是600

重新生成rsa密钥:

清空所有的authorized_keys

拷贝其他主机的id_rsa.pub到临时目录,并追加内容到authorized_keys

Ip依次改动91,92,93,94

scp oss@10.25.24.94:/home/oss/.ssh/id_rsa.pub ./tmp/

cat ./tmp/id_rsa.pub >> authorized_keys

最后修改权限chmod 600 authorized_keys

然后拷贝文件到各个子节点

3.Zookeeper配置

下载地址:https://apache.org/dist/zookeeper/zookeeper-3.4.13/

上传服务器,并解压

tar -zxvf zookeeper-3.4.13.tar.gz

创建zk数据目录

/home/oss/hadoop/zookeeper-3.4.13/zkData

如果要启动zookeeper首先必须配置conf/zoo.cfg文件

cp zoo_sample.cfg zoo.cfg

最后的server.x

注意server.x 这个X一定要和myid对应起来,并且前面不用的服务器先注解调

4.设置Hadoop配置文件

4.1设置Hadoop的jdk路径

4.2 设置hdfs配置

设置一个逻辑名称,定义一个新的集群名称

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

</property>

配置这个namenode下的其他集群

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

这里注意下,如果有NFS共享磁盘,那么我们

<property>

<name>dfs.namenode.shared.edits.dir[x3] </name>

<value>file:///mnt/filer1/dfs/ha-name-dir-shared</value>

</property>

可以配置一个绝对路径

总体配置:

如果使用高可用HA配置,使用ZK部署,那么还需要配置

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

4.3 修改core-site.xml

4.4 采用yarn作为mapreduce的资源调度框架

vi mapred-site.xml

这个运行框架可选:

local, classic or yarn.

Local:则不会使用YARN集群来分配资源,在本地节点执行。在本地模式运行的任务,无法发挥集群的优势

Yarn: mapreduce.framework.name设置为yarn,当客户端配置mapreduce.framework.name为yarn时, 客户端会使用YARNRunner与服务端通信, 而YARNRunner真正的实现是通过ClientRMProtocol与RM交互, 包括提交Application, 查询状态等功能

老一些的版本还有一个JobTracker的实现类,即:classic。用于和MapReduce1.X兼容用的,高一些的版本已经没有这个实现类了。

编辑配置yarn-site.xml

4.5 配置文件设置子文件

5.启动集群

配置path环境变量bin目录

如果手动管理集群上的服务,则需要在运行名称节点的每台计算机上手动启动zkfc守护程序。

./hadoop-daemon.sh --script /home/oss/hadoop/hadoop-2.9.2/bin/hdfs start zkfc

5.1 启动zk

每个节点都启动一下

5.2 启动Hadoop集群

格式化namenode

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>

hdfs namenode -format hbyd_hadoop

启动namenode

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode

启动namenode

./hadoop-daemon.sh --config /home/oss/hadoop/hadoop-2.9.2/etc/hadoop --script hdfs start namenode

如果ssh配置好了,启动所有hdfs配置

Sbin/start-dfs.sh

格式化ZK(只用在一台namenode上执行)

Hdfs zkfc -formatZK

Hadoop启动ZK管控切换

./hadoop-daemon.sh start zkfc

5.3 启动yarn资源管理集群

注意我们需要手动启动另外一个resourceManager节点

yarn-daemon.sh start resourcemanager手动启动。

查看节点状态

yarn rmadmin -getServiceState rm1

active

yarn rmadmin -getServiceState rm1

6.动态添加节点

6.1 添加datanode节点

6.1.1 先设置hostname

这个要root用户

设置主节点到对应子节点的域名配置

92,93设置一下

6.1.2 设置ssh免密登录(2台namenode都要)

ssh-keygen -m PEM -t rsa

(这个是生成PEM的模式)

这里重新设置免密登录

获取到公钥文件之后,复制所有公钥到一个文件,然后分发到各个服务器

cat id_rsa.pub > authorized_keys

设置文件权限,authoriz.. 必须是600

重新生成rsa密钥:

清空所有的authorized_keys

拷贝其他主机的id_rsa.pub到临时目录,并追加内容到名称节点的authorized_keys

6.1.3 部署子节点

拷贝Hadoop部署包到相应的子节点

修改主节点slave文件,添加新增节点的ip信息(集群重启时使用)

6.1.4 启动datanode节点

配置子节点环境变量(子节点对namenode也要互通)

运行sbin/hadoop-daemon.sh start datanode

启动子节点nodemanager

6.1.5 启动子节点yarn服务

在新增节点,运行sbin/yarn-daemon.sh start nodemanager即可

问题:

1.无法启动namenode,显示50070端口被占用

之前把http-address写成了rcp和上面重复了

2.第二个namenode无法启动,namespaceid冲突

是否是第二个节点没有格式化

拷贝namenode1的tmp目录中的namenode的配置文件进入第二个namenode节点的tmp目录中

3.部署好了无法切换namenode Unable to fence service by any configured method

2019-01-09 14:27:59,677 INFO org.apache.hadoop.ha.NodeFencer: Trying method 1/1: org.apache.hadoop.ha.SshFenceByTcpPort(null)

2019-01-09 14:27:59,677 WARN org.apache.hadoop.ha.SshFenceByTcpPort: Unable to create SSH session

com.jcraft.jsch.JSchException: invalid privatekey: [B@54e5974c

提示是SSH错误的密钥

这里我们改一下配置试一下

最后发现是centos7默认生成的密钥文件是OPENSSH开头的

而JSch

无法识别。。。。

只能识别-----BEGIN RSA PRIVATE KEY-----这种

气死我了,浪费我时间。。。。,这个算jsch自己的不完善吧。。。


[x1]参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。

[x2]表单server.x的条目列出了组成ZooKeeper服务的服务器。当服务器启动时,它通过在dataDir中查找文件myid来知道它是哪个服务器。该文件包含服务器号,以ASCII格式。

[x3]上述配置调整完毕后,我们就可以启动journalNodes守护进程,默认的"sbin/start-dfs.sh"脚本会根据"dfs.namenode.shared.edits.dir"配置,在相应的Datanode上启动journalNodes。当然我们可以使用::"bin/hdfs start journalnode"分别在相应的机器上启动。

一旦JournalNodes启动成功,它们将会从Namenode上同步metadata。

1、如果你的HDFS集群是新建的,那么需要在每个Namenode上执行"hdfs namenode -format"指令。

2、如果你的namenodes已经format了,或者是将non-ha转换成ha架构,你应该在将其中一个namenode上的metadata复制到另一台上(dfs.namenode.name.dir目录下的数据),然后在那个没有format的新加入的namenode上执行"hdfs namenode -bootstrapStandby"。运行这个指令需要确保JournalNodes中持有足够多的edits。

3、如果你将一个non-ha的Namenode(比如backup,其已经formated)切换成HA,你需要首先运行"hdfs -initializeSharedEdits",这个指令将本地Namenode中的edits初始化Journalnodes。

此后,你就可以启动HA Namenodes。可以通过配置指定的HTTP地址(dfs.namenode.https-address)来查看各个Namenode的状态,Active or Standby。

转载于:https://www.cnblogs.com/cutter-point/p/10255471.html

【Hadoop】2、Hadoop高可用集群部署相关推荐

  1. Hadoop部署方式-高可用集群部署(High Availability)

    Hadoop部署方式-高可用集群部署(High Availability) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的高可用集群是建立在完全分布式基础之上的,详情请参 ...

  2. Mysql数据库(十一)——MHA高可用集群部署及故障切换

    Mysql数据库(十一)--MHA高可用集群部署及故障切换 一.MHA概述 二.MHA的组成 三.MHA的特点 四.案例环境 1.服务器配置 2.思路 3.关闭防火墙和安全机制,并进行主从配置 4.配 ...

  3. 数据库系列之SequoiaDB高可用集群部署(二)

    SequoiaDB作为存储引擎,支持高并发的HTAP场景.本位总结运维分析项目中使用SequoiaDB作为数据存储的高可用部署实战,并接入Kafka进行高并发的更新业务和Spark进行高并发的批量查询 ...

  4. 数据库系列之SequoiaDB高可用集群部署(一)

    SequoiaDB作为存储引擎,支持高并发的HTAP场景.本位总结运维分析项目中使用SequoiaDB作为数据存储的高可用部署实战,并接入Kafka进行高并发的更新业务和Spark进行高并发的批量查询 ...

  5. Kubernetes容器集群 - harbor仓库高可用集群部署说明

    之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...

  6. Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)

    之前的文章已对RocketMQ做了详细介绍,这里就不再赘述了,下面是本人在测试和生产环境下RocketMQ3.4.6高可用集群的部署手册,在此分享下: 1) 基础环境 ip地址 主机名 角色 192. ...

  7. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  8. 干货 | 数据不丢失?有它就够了——金仓KingbaseES高可用集群部署

    可用性是数据库的重要指标之一,高可用集群是保障数据不丢失.服务可用的主要措施之一.下面将从部署维度阐晰金仓数据库KingbaseES如何打造高可用集群. 高可用架构基础 实践中,通常让多个数据库服务器 ...

  9. k8s集群部署 | 二进制三节点(复用)高可用集群部署过程

    文章目录 1. 二进制部署三节点(复用)高可用 k8s 集群 1.1 环境规划阶段 1.1.1 实验架构图 1.1.2 系统版本说明 1.1.3 环境基本信息 1.1.4 k8s 网段划分 1.2 基 ...

最新文章

  1. HashSet中的add()方法( 一 )(详尽版)
  2. 10个堪称神器的学习网站
  3. 文件服务器在哪里靠谱,vps作为文件服务器靠谱吗
  4. 《javaScript100例|02》超级经典一套鼠标控制左右滚动图片带自动翻滚
  5. (tmp 8) 0xff;
  6. java 蓝桥杯历届试题 回文数字(题解)
  7. smart-link原理
  8. 在C 语言中 下列变量命名不合规范的是,GJB9001C-2017内审员培训试题D卷(答案)
  9. sql server 2008导出数据至Excel或者wps
  10. livereload(自动刷新)
  11. 一级计算机考试电子表格排序筛选,重新应用Excel排序和筛选或清除筛选
  12. 凸优化理论(一)数学优化问题的分类
  13. java学习笔记第三周(二)
  14. C# wherewhereif
  15. 猫和老鼠服务器维修有问题,猫和老鼠常见问题怎么解决_游戏技巧攻略_3DM手游...
  16. 零基础学浙大翁恺C语言(2):计算
  17. iOS OC语言(二) 类
  18. 操作系统实验(2)—— Linux启动初始化过程设计探析实验
  19. MCU VR 應用班 翻轉式課堂
  20. c语言编译load,用C语言写汇编代码之LoadLibrary

热门文章

  1. 论Python的先进性!!!
  2. 可视化监控的软件有哪些 ?
  3. 大数据资产管理平台实践(附PDF下载)
  4. python图像填充与裁剪/resize
  5. pytorch实现LSTM学习总结
  6. 头歌实践教学平台数据结构与算法:02线性表
  7. 英,克莱儿•麦克福尔著,付强译《摆渡人2重返荒原》
  8. 专利搜索方法-专利检索网站使用方法
  9. 雅思7分的思考于回忆
  10. 我的Python——学习记录10.16