Hadoop Zookeeper 搭建(一)

一、准备工作

VMWARE虚拟机 CentOS 7 系统

虚拟机1:master

虚拟机2:node1

虚拟机3:node2

  • 时间同步

    ntpdate ntp.aliyun.com
  • 调整时区

    cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  • jdk1.8(以1.8为例,目前大多数企业都是使用1.8版本,最稳定)

    java -version
  • 修改主机名

    三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld

    • 取消防火墙自启:systemctl disable firewalld

  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33

      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6

      需要修改:HWADDR(mac地址,centos7不需要手动指定mac地址)
      IPADDR(根据自己的网段,自定义IP地址)
      GATEWAY(根据自己的网段填写对应的网关地址)

      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager

      3、重启网络服务
      systemctl restart network
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    注意:连敲三次生成方格形状的密钥,在当前状态下,配置免密钥登陆。
    # 2、配置免密登录(三台虚拟机都需要进行免密操作,不要怕麻烦!!)
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
    ssh node2
    ssh master
  • 配置好映射文件:/etc/hosts(三台虚拟机都需要配置)

    192.168.170.100 master
    192.168.170.101 node1
    192.168.170.102 node2
    注意:每个人的IP地址都是不一样的,查看自己的IP地址使用 ifconfig
    使用远程复制
    cd /etc
    scp -r hosts/ node1:`pwd`
    scp -r hosts/ node2:`pwd`

二、 Zookeeper 搭建

1、上传安装包到master并解压

    tar -xvf zookeeper-3.4.6.tar.gz
官网下载:
https://zookeeper.apache.org/

2、配置环境变量

vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
保存退出,执行
source /etc/profile 配置node1和node2的环境变量
scp /etc/profile node1:/etc/
scp /etc/profile node2:/etc/ 在所有节点执行
source /etc/profile

3、修改配置文件

cd /usr/local/soft/zookeeper-3.4.6/(解压后的目录)
​ cd conf
zoo_sample.cfg(是一个模板文件,_sample后缀,不起任何效果,需要复制一份)
​ cp zoo_sample.cfg zoo.cfg
修改
dataDir=/usr/local/soft/zookeeper-3.4.6/data 文件最后位置增加
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888

4、同步到其它节点

	scp -r zookeeper-3.4.6 node1:`pwd`
scp -r zookeeper-3.4.6 node2:`pwd`

5、创建/usr/local/soft/zookeeper-3.4.6/data目录,所有节点都要创建

mkdir /usr/local/soft/zookeeper-3.4.6/data

在data目录下创建myid文件
vim myid
master,node1,node2分别加上0,1,2

6、启动zk, zkServer.sh start 三台都需要执行

zkServer.sh status 查看状态

当有一个leader的时候启动成功

连接zk zkCli.sh

zk  是一个目录结构 ,每个节点可以存数据,同时可以有子节点

zk shell

创建目录
create /test test
create /test/a 1
获取数据
get /test ls /test delete 只能删除没有子节点的节点
rmr /test 删除节点

重置zk 1、杀掉所有zk进程 kiil -9 pid

2、删除data目录下的version文件, 所有节点都要删除 rm -rf /usr/local/soft/zookeeper-3.4.6/data/version-2

2、启动zk zkServer.sh start

Hadoop -HA 高可用 搭建(二)

一、准备工作(做之前拍摄快照)

VMWARE虚拟机 CentOS 7 系统

虚拟机1:master

虚拟机2:node1

虚拟机3:node2

  • 时间同步

    ntpdate ntp.aliyun.com
  • 调整时区

    cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  • jdk1.8(以1.8为例,目前大多数企业都是使用1.8版本,最稳定)

    java -version
  • 修改主机名

    三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld

    • 取消防火墙自启:systemctl disable firewalld

  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33

      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6

      需要修改:HWADDR(mac地址,centos7不需要手动指定mac地址)
      IPADDR(根据自己的网段,自定义IP地址)
      GATEWAY(根据自己的网段填写对应的网关地址)

      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager

      3、重启网络服务
      systemctl restart network
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    注意:连敲三次生成方格形状的密钥,在当前状态下,配置免密钥登陆。
    # 2、配置免密登录(三台虚拟机都需要进行免密操作,不要怕麻烦!!)
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
    ssh node2
    ssh master
  • 配置好映射文件:/etc/hosts(三台虚拟机都需要配置)

    192.168.170.100 master
    192.168.170.101 node1
    192.168.170.102 node2
    注意:每个人的IP地址都是不一样的,查看自己的IP地址使用 ifconfig
    使用远程复制
    cd /etc
    scp -r hosts/ node1:`pwd`
    scp -r hosts/ node2:`pwd`

二、 Zookeeper 搭建(一中有详细教程)

        ZK  NN  DN  RM  NM  JN  ZKFC
master 1 1 1 1 1
node1 1 1 1 1 1 1 1
node2 1 1 1 1

停止HDFS集群:stop-dfs.sh

1、修改hadoop配置文件

cd  /usr/local/soft/hadoop-2.7.6/etc/hadoop
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

举例视图:

[root@master hadoop]# ll
总用量 156
-rw-r--r-- 1 20415 101 4436 4月 18 2018 capacity-scheduler.xml
-rw-r--r-- 1 20415 101 1335 4月 18 2018 configuration.xsl
-rw-r--r-- 1 20415 101 318 4月 18 2018 container-executor.cfg
-rw-r--r-- 1 20415 101 1100 5月 21 15:40 core-site.xml
-rw-r--r-- 1 20415 101 3670 4月 18 2018 hadoop-env.cmd
-rw-r--r-- 1 20415 101 4269 5月 21 17:38 hadoop-env.sh
-rw-r--r-- 1 20415 101 2598 4月 18 2018 hadoop-metrics2.properties
-rw-r--r-- 1 20415 101 2490 4月 18 2018 hadoop-metrics.properties
-rw-r--r-- 1 20415 101 9683 4月 18 2018 hadoop-policy.xml
-rw-r--r-- 1 20415 101 961 5月 21 15:43 hdfs-site.xml
-rw-r--r-- 1 20415 101 1449 4月 18 2018 httpfs-env.sh
-rw-r--r-- 1 20415 101 1657 4月 18 2018 httpfs-log4j.properties
-rw-r--r-- 1 20415 101 21 4月 18 2018 httpfs-signature.secret
-rw-r--r-- 1 20415 101 620 4月 18 2018 httpfs-site.xml
-rw-r--r-- 1 20415 101 3518 4月 18 2018 kms-acls.xml
-rw-r--r-- 1 20415 101 1527 4月 18 2018 kms-env.sh
-rw-r--r-- 1 20415 101 1631 4月 18 2018 kms-log4j.properties
-rw-r--r-- 1 20415 101 5540 4月 18 2018 kms-site.xml
-rw-r--r-- 1 20415 101 11801 4月 18 2018 log4j.properties
-rw-r--r-- 1 20415 101 951 4月 18 2018 mapred-env.cmd
-rw-r--r-- 1 20415 101 1383 4月 18 2018 mapred-env.sh
-rw-r--r-- 1 20415 101 4113 4月 18 2018 mapred-queues.xml.template
-rw-r--r-- 1 root root 1116 5月 21 15:44 mapred-site.xml
-rw-r--r-- 1 20415 101 758 4月 18 2018 mapred-site.xml.template
-rw-r--r-- 1 20415 101 12 5月 21 15:44 slaves
-rw-r--r-- 1 20415 101 2316 4月 18 2018 ssl-client.xml.example
-rw-r--r-- 1 20415 101 2697 4月 18 2018 ssl-server.xml.example
-rw-r--r-- 1 20415 101 2191 4月 18 2018 yarn-env.cmd
-rw-r--r-- 1 20415 101 4567 4月 18 2018 yarn-env.sh
-rw-r--r-- 1 20415 101 1185 5月 21 15:45 yarn-site.xml

修改配置文件

core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,node1:2181,node2:2181</value>
</property>
</configuration>

修改配置文件

hdfs-site.xml

<configuration>
<!-- 指定hdfs元数据存储的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/namenode</value>
</property> <!-- 指定hdfs数据存储的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/datanode</value>
</property> <!-- 数据备份的个数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property> <!-- 关闭权限验证 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property> <!-- 开启WebHDFS功能(基于REST的接口服务) -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property> <!-- //////////////以下为HDFS HA的配置////////////// -->
<!-- 指定hdfs的nameservices名称为mycluster -->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property> <!-- 指定cluster的两个namenode的名称分别为nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>nn1,nn2</value>
</property> <!-- 配置nn1,nn2的rpc通信端口 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.nn2</name>
<value>node1:8020</value>
</property> <!-- 配置nn1,nn2的http通信端口 -->
<property>
<name>dfs.namenode.http-address.cluster.nn1</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.nn2</name>
<value>node1:50070</value>
</property> <!-- 指定namenode元数据存储在journalnode中的路径 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
</property> <!-- 指定journalnode日志文件存储的路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/journal</value>
</property> <!-- 指定HDFS客户端连接active namenode的java类 -->
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property> <!-- 配置隔离机制为ssh -->
<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_rsa</value>
</property>: <!-- 开启自动故障转移 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>

yarn 高可用 修改配置文件

yarn-site.xml

<configuration>
<!-- 指定MapReduce计算框架使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> <!-- 指定jobhistory server的rpc地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property> <!-- 指定jobhistory server的http地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property> <!-- 开启uber模式(针对小作业的优化) -->
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property> <!-- 配置启动uber模式的最大map数 -->
<property>
<name>mapreduce.job.ubertask.maxmaps</name>
<value>9</value>
</property> <!-- 配置启动uber模式的最大reduce数 -->
<property>
<name>mapreduce.job.ubertask.maxreduces</name>
<value>1</value>
</property>
</configuration>

修改配置文件

mapred-site.xml

<!-- 指定MapReduce计算框架使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> <!-- 指定jobhistory server的rpc地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property> <!-- 指定jobhistory server的http地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property> <!-- 开启uber模式(针对小作业的优化) -->
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property> <!-- 配置启动uber模式的最大map数 -->
<property>
<name>mapreduce.job.ubertask.maxmaps</name>
<value>9</value>
</property> <!-- 配置启动uber模式的最大reduce数 -->
<property>
<name>mapreduce.job.ubertask.maxreduces</name>
<value>1</value>
</property>

5、删除hadoop数据存储目录下的文件 每个节点都需要删除(直接删除其他节点上的 /hadoop-2.7.6/ 文件夹)

注:原来的节点上没有Hadoop这个文件就不要删除了!!

其他节点上删除   node1   node2
rm -rf /usr/local/soft/hadoop-2.7.6/

同步到其它节点 (远程复制一份到其他两个节点上去)

cd /usr/local/soft/
scp -r hadoop-2.7.6/ node1:`pwd`
scp -r hadoop-2.7.6/ node2:`pwd`

三、启动进程 (按照一下顺序进行操作)

6、启动zookeeper 三台都需要启动 zkServer.sh start zkServer.sh status

7、启动JN 存储hdfs元数据 三台JN上执行 启动命令:

cd /usr/local/soft/hadoop-2.7.6/sbin/
hadoop-daemon.sh start journalnode

8、格式化 在一台NN上执行,这里选择master

hdfs namenode -format

启动当前的NN

hadoop-daemon.sh start namenode

9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1

/usr/local/soft/hadoop-2.7.6/bin/
hdfs namenode -bootstrapStandby

10、格式化ZK 在master上面执行 !!一定要先 把zk集群正常 启动起来

/usr/local/soft/hadoop-2.7.6/bin/
hdfs zkfc -formatZK

11、启动hdfs集群,在master上执行

start-dfs.sh

最后在页面查看(以下显示,集群搭建成功)

http://master:50070/   或者     http://192.168.170.110:50070/ 
http://node1:50070/    或者     http://192.168.170.120:50070/ 

关闭

stop-all.sh
 

Hadoop-HA 搭建高可用集群Hadoop Zookeeper的更多相关文章

  1. Nginx 笔记(四)nginx 原理与优化参数配置 与 nginx 搭建高可用集群

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.nginx 原理与优化参数配置 ​ ​ master-workers 的机制的好处 首先,对于每个 ...

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

    版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的高可用集群是建立在完全分布式基础之上的,详情请参考:https://www.cnblogs.com/yinzhengjie/p/90651 ...

  3. CentOS 7下搭建高可用集群

    一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# ...

  4. ActiveMQ+ZooKeeper搭建高可用集群

    一.说明 实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理.部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务. ActiveMQ的集群部署,基于zookeeper ...

  5. 用kubeadm 搭建 高可用集群问题记录和复盘整个过程 - 通过journalctl -u kubelet.service命令来查看kubelet服务的日志

    1.根据  https://github.com/cookeem/kubeadm-ha/blob/master/README_CN.md  去搭建ha集群,遇到几个问题: runtime networ ...

  6. keepalive + nginx 搭建高可用集群动态网站

    环境准备: 两台节点部署keepalived,并且设为互为主从,实现高可用. 两台从节点部署nginx以及相关组件,作为真实服务器实现动态网站上线. 一.MASTER(BACKUP)节点下载keepa ...

  7. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群

    1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...

  8. [图文][提供可行性脚本] CentOS 7 Fencing+Pacemaker三节点搭建高可用集群

    实验说明: 实验环境: 宿主机系统   :Fedora 28 WorkStation 虚拟机管理器 :Virt-Manager 1.5.1 虚拟机配置   :ha1  CentOS 7.2 1511 ...

  9. 使用kubeadm 搭建高可用集群 多master

    很快很简单 只要三分钟就能看完 三台服务器 k8s-vip  负载均衡器 k8s-master1 主节点一 k8s-master2 主节点一 官方文档 首先搭建负载均衡器 用的Haproxy yum ...

随机推荐

  1. openstack之Designate组件,入门级安装(快速)

    @ 目录 前言 架构 前提准备 创建 DNS 服务 API 端点 安装和配置组件 验证操作 前言 Designate 是一个开源 DNS 即服务实施,是用于运行云的 OpenStack 服务生态系统的 ...

  2. Spring按业务模块输出日志到不同的文件

    一.背景 在我们开发的过程中,可能存在如下情况: 1.有些时候我们需要调用第三方的接口,一般情况下,调用接口,我们都会记录请求的入参和响应的.如果我们自己系统的日志和第三方的日志混合到一个日志文件中, ...

  3. 【python疫情可视化】用pyecharts开发全国疫情动态地图,效果酷炫!

    一.效果演示 我用python开发了一个动态疫情地图,首先看下效果: 如图所示,地图根据实时数据通过时间线轮播的方式,动态展示数据的变化.随着时间的推移,疫情确诊数量的增多,地图各个省份颜色逐渐加深, ...

  4. 6.Docker网络

    什么是 Docker网络 docker 不启动,默认网络情况 ens33 lo virbr0 在 CentOS7 的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的 ...

  5. 使用echo 无法正确清空文件存储大小

    在使用echo进行重定向文件的时候,会存在大小没有发生改变的现象 使用上面的方法遇到一个现象 ls -l 与 du -sh 得到的大小事是不同的 可以尝试下面的方面之后在进行对比 再看是否正确清除 使 ...

  6. unity---脚本创建文本

    脚本创建文本 新建文件夹 Resources 方便引用字体 在文件Resources中新建Fonts,并且下载一个ttf字体 没有字体,文本内容无法显示 脚本如下 public GameObject ...

  7. 负载均衡之DR实验

    实验环境 本实验搭建在虚拟机中.一台服务器作为DR两台作为RS,还有一台为后续内容会用到的备用机. 实验环境示意图: 1. 修改网络层VIP 修改DR,添加VIP 修改前: 修改后: 修改RS,修改A ...

  8. Docker的网络

    概述 docker使用Linux桥接网卡,在宿主机虚拟一个docker容器网桥(docker0),docker启动一个容器时会根 据docker网桥的网段分配给容器一个IP地址,称为Container ...

  9. 【抬杠C#】如何实现接口的base调用

    背景 在三年前发布的C#8.0中有一项重要的改进叫做接口默认实现,从此以后,接口中定义的方法可以包含方法体了,即默认实现.不过对于接口的默认实现,其实现类或者子接口在重写这个方法的时候不能对其进行ba ...

  10. SQL的语法

    SQL的语法 SQL通用语法 SQL语句可以单行或多行书写,以分号(";")结尾. SQL语句可以使用空格或缩进增强可读性. MySQL数据库的SQL语句不区分大小写(建议关键字大 ...