hadoop高可用安装

date: 2020-06-18 21:11:28
categories:

  • 大数据
  • hadoop

前期准备

准备好四台安装了centos系统的虚拟机,并在其中一台完成伪分布式的安装

高可用安装

HA安装方案

分发jdk到node02,ndoe03,node04上

scp jdk-7u67-linux-x64.rpm node02:`pwd`
scp jdk-7u67-linux-x64.rpm node03:`pwd`
scp jdk-7u67-linux-x64.rpm node04:`pwd`

并在Xshell的全部会话栏里一起ll,看jdk是否发送成功。

给node02,node03,node04分别安装jdk

分别在node02,node03,node04上执行rpm安装命令。

rpm -i jdk-7u67-linux-x64.rpm

在node01上cd /etc,在此目录下把profile文件分发到node02、03、04上。

scp profile node04:`pwd`

利用Xshell全部会话栏,source /etc/profile

利用Xshell全部会话栏,jps,看02、03、04这三台机子的jdk是否装好。

同步所有服务器的时间

yum -y install ntp
ntpdate time1.aliyun.com   #和阿里云服务器时间同步

装机之前的配置文件检查

1.cat /etc/sysconfig/network

​ 查看HOSTNAME是否正确

2.cat /etc/hosts

​ 查看IP映射是否正确,若不正确,可以改文件,也可以把node01上的用scp分发过去.。

3.cat /etc/sysconfig/selinux

​ 检查SELINUX的值是否是disabled

4.service iptables status

​ 查看防火墙是否关闭

NN与其他三台机子的免秘钥设置

1.在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost一下,完成后记得exit退出。

2.cd /.ssh,并ll查看一下

3.把node01的公钥发给其他三台机子

scp id_dsa.pub node02:`pwd`/node01.pub
scp id_dsa.pub node03:`pwd`/node01.pub
scp id_dsa.pub node04:`pwd`/node01.pub

4.将node02的.ssh目录下的node01.pub追加到authorized_keys

cat node01.pub >> authorized_keys

5.其他两台机子同上,并检查在node01上能否ssh连接到其他三台机子

两个NN间互相免密钥

在node02上:

 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsacat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh localhost验证一下

分发到node01上:

scp id_dsa.pub  node01:`pwd`/node02.pub

在node01的.ssh目录下,

cat node02.pub >> authorized_keys

在node02上ssh node01验证一下可否免密钥登录

修改namenode的一些配置信息

vi hdfs-site.xml

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>node01:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>node02:8020</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>node01:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>node02:50070</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value></property><property><name>dfs.journalnode.edits.dir</name><value>/var/lh/hadoop/ha/jn</value></property><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>/root/.ssh/id_dsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>

vi core-site.xml

<!– 集群名称mycluster-->
<property><name>fs.defaultFS</name><value>hdfs://mycluster</value>
</property>
<!– zookeeper布署的位置-->
<property><name>ha.zookeeper.quorum</name><value>node02:2181,node03:2181,node04:2181</value>
</property>

vi slaves

node02
node03
node04

安装hadoop

cd /opt,将其下的lh3目录分发到node02、03、04

scp –r  lh/ node02:`pwd`
scp –r  lh/ node03:`pwd`
scp –r  lh/ node04:`pwd`

将hdfs-site.xml和core-site.xml分发到node02、03、04

scp hdfs-site.xml core-site.xml node02:`pwd`
scp hdfs-site.xml core-site.xml node03:`pwd`
scp hdfs-site.xml core-site.xml node04:`pwd`

安装zookeeper

解压安装zookeeper

tar xf zookeeper-3.4.6.tar.gz -C /opt/lh

修改zookeeper的配置文件

cd /opt/lh/zookeeper-3.4.6/conf

给zoo_sample.cfg改名

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

改dataDir=/var/lh/zk

并在末尾追加

server.1=node02:2888:3888server.2=node03:2888:3888server.3=node04:2888:3888

其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

把zookeeper分发到其他节点

scp -r zookeeper-3.4.6/ node03:`pwd`
scp -r zookeeper-3.4.6/ node04:`pwd`

并用`ll /opt/lh检查下看分发成功没

给每台机子创建刚配置文件里的路径

mkdir -p /var/lh/zk

对node02来说

echo 1 > /var/lh/zk/myid
cat /var/lh/zk/myid

对node03来说

echo 2 > /var/lh/zk/myid
cat /var/lh/zk/myid

对node04来说

echo 3 > /var/lh/zk/myid
cat /var/lh/zk/myid

在/etc/profile里面配置

export ZOOKEEPER_HOME=/opt/lh/zookeeper-3.4.6
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

然后在把/etc/profile分发到其他node03、node04

scp /etc/profile node03:/etc
scp /etc/profile node04:/etc

然后在node02,node03,node04中source /etc/profie

验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

启动zookeeper

全部会话:zkServer.sh start

接着用zkServer.sh status查看每个zookeeper节点的状态

如果启动不起来,请把/etc/profile里的JAVA_HOME改成绝对路径。

启动journalnode

在01、02、03三台机子上分别把journalnode启动起来

hadoop-daemon.sh start journalnode

jps检查下进程启起来了没

格式化任一namenode

随意挑一台namenode上执行hdfs namenode –format

另一台namenode不用执行,否则clusterID变了,找不到集群了。

然后,启动刚刚格式化的那太namenode:

hadoop-daemon.sh start namenode

给另一namenode同步数据

在另外一台namenode上执行

hdfs namenode -bootstrapStandby

格式化zkfc

hdfs zkfc -formatZK

在node02上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开

启动hdfs集群

start-dfs.sh

为MapReduce

把mapred-site.xml.template留个备份,并且改下名字

cp mapred-site.xml.template mapred-site.xml

在mapred-site.xml里添加如下property

<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>

在yarn-site.xml里添加如下property

<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
</property>
<property><name>yarn.resourcemanager.cluster-id</name><value>cluster1</value>
</property>
<property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm1</name><value>node03</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm2</name><value>node04</value>
</property>
<property><name>yarn.resourcemanager.zk-address</name><value>node02:2181,node03:2181,node04:2181</value>
</property>

把mapred-site.xml和yarn-site.xml 分发到node02、03、04

scp mapred-site.xml yarn-site.xml node02:`pwd`
scp mapred-site.xml yarn-site.xml node03:`pwd`
scp mapred-site.xml yarn-site.xml node04:`pwd`

由于node03和node04都是resourcemanager,所以它俩应该相互免密钥

node03上免密钥登录node04:

在node03的.ssh目录下生成密钥

ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

ssh localhost验证看是否需要密码,别忘了exit

将node03 的公钥分发到node04

 scp id_dsa.pub node04:`pwd`/node03.pub

在node04的.ssh目录下,追加node03.pub

cat node03.pub >> authorized_keys

在node03上ssh node04,看是否免密钥。

node04上免密钥登录node03同理。

启动所有进程,并检查是否有遗漏

运行wordcount测试

cd /opt/lh/hadoop-2.6.5/share/hadoop/mapreduce

在hdfs里建立输入目录和输出目录

hdfs dfs -mkdir -p /data/in
hdfs dfs -mkdir -p /data/out

将要统计数据的文件上传到输入目录并查看

hdfs dfs -put ~/500miles.txt /data/in
hdfs dfs -ls /data/in

运行wordcount(注意:此时的/data/out必须是空目录)

hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result

查看运行结果

hdfs dfs -ls /data/out/result
hdfs dfs -cat /data/out/result/part-r-00000

关闭集群

#node01
stop-dfs.sh
#node01
stop-yarn.sh #(停止nodemanager)
#node03,node04
yarn-daemon.sh stop resourcemanager
#Node02、03、04
zkServer.sh stop

在windows下配置hadoop的环境

更改环境变量,增加HADOOP_HOME

并在path中添加HADOOP_HOME中添加路径

然后再新建一个变量HADOOP_USER_NAME

把hadoop.dll拷贝到以下路径

安装eclipse-mars,并调出Map/Reduce Locations

新建一个hadoop localtion(Host:哪个namenode是active,就填哪个;port:8020)

在eclipse里导入自己建一个包库,并把jar包导入刚建的包库

利用xftp把hdfs-site.xml,core-site.xml等几个xml放到project的src目录。

行文至此我的作业就彻底写完了,感谢谆谆教导的LDY老师,感谢替我解答问题、完成作业的XXX多位同学。

hadoop高可用安装教程(刘浩)相关推荐

  1. sealos kubernetes(k8s)高可用安装教程

    官网地址 https://www.sealyun.com/instructions 快速开始 环境信息 主机名 IP地址 master0 192.168.0.2 master1 192.168.0.3 ...

  2. CLOUD 04:zookeeper,kafka,hadoop高可用

    zookeeper 安装 1 禁用防火墙和 selinux 2 设置 /etc/hosts ip 主机名对应关系 3 安装 openjdk zookeeper 角色,选举 leader 集群主节点 f ...

  3. hadoop 查看节点主备装填_基于ZooKeeper搭建Hadoop高可用集群

    作者博客:https://blog.csdn.net/m0_37809146/ 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用 ...

  4. HA:HADOOP高可用机制

    课程大纲(HADOOP高可用机制) HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌 ...

  5. 大数据-HADOOP高可用、联邦机制- 学习笔记 -BH4

    HADOOP高可用.联邦机制 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 HA的运作机制 hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不中断服务),实 ...

  6. Ghost 的高可用安装 安装篇

    前面详细的讲述了,在 Node.js 4.x 环境下安装 Ghost 博客平台的准备工作,包括配置.系统的选择,组建的选择等等,如果没有看过的同学,一定要去看一下! 门:<Ghost 的高可用安 ...

  7. ansible 建 kubernetes 证书签名请求_最简单的 kubernetes 高可用安装方式!(文末送书)...

    福利 文末留言送 3 本由马哥教育 CEO 马哥(马永亮)撰写的<Kubernetes 进阶实战>,希望大家点击文末的留言小程序积极留言,每个人都有机会. 前言 本文教你如何用一条命令构建 ...

  8. 镭速(Raysync)文件传输高可用安装部署介绍!

    使用HeartBeat实现高可用HA的配置.HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A提供服务,B待命闲置,当 A ...

  9. Hadoop高可用集群下namenode格式化失败问题解决

    Hadoop高可用集群下namenode格式化失败问题解决 输入hdfs namenode -format报如下错误 解决方法: 1.在zookeeper目录下执行./bin/zkServer.sh ...

最新文章

  1. ApacheCN 学习资源汇总 2019.3
  2. 从传统到深度学习:浅谈点云分割中的图结构
  3. mfc清空数组_MFC数组的使用
  4. 学习jQuery(一),做的第一个可拖动列的Grid
  5. Error message Exception raised without specific error
  6. python请输入你的名字_实现《你的名字》同款滤镜,python+opencv
  7. ZOJ 1004 Anagrams by Stack(DFS+数据结构)
  8. 数据结构之算法初涉(2)
  9. 【数据结构】银行排队取票机的原理是什么?详解队列
  10. Bandizip去除广告,注册图标,状态栏文本
  11. 防雷知识:什么是雷电浪涌
  12. 生命倒计时-倒数9116日
  13. python bp神经网络的库_python bp神经网络库
  14. GridControl设置标题
  15. 项目 调度 服务器,(2)项目构建(Reactor部分)【Lars-基于C++负载均衡远程服务器调度系统教程】...
  16. 移动通信发展历程见解(从1G到5G发展历程)
  17. 如何用matlab画出正螺面,matlab中的螺旋网格
  18. ESP8266物联网台灯
  19. 搜索引擎优化技巧解读
  20. Web---监听用户名注册技术-myAJax-隐藏帧

热门文章

  1. 105页智慧小镇综合解决方案
  2. 【学习笔记】Numpy科学计算库基础学习
  3. 计算机控制技术的英语,计算机控制技术(国外英文资料).doc
  4. 区间动态规划考试反思总结——颜色联通块 分离与合体 括号涂色
  5. spark sql读取sql server报错:com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name ‘dbo.st
  6. createnewfile() java_Java File createNewFile()方法
  7. 拯救电脑硬盘的某个分区文件系统变成RAW的有效方式
  8. 如何在iPhone和iPad上的Safari中查看保存的密码
  9. D-HAZY :一个用于定量评估去雾算法的数据集
  10. python笛卡尔_用python计算笛卡尔坐标