A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaozuoquan 中级黑马   /  2019-8-15 16:42  /  1400 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiaozuoquan 于 2019-8-15 16:51 编辑

5.1:三台虚拟机关闭防火墙
三台机器执行以下命令(root用户来执行)
[AppleScript] 纯文本查看 复制代码
service iptables stop   #关闭防火墙
chkconfig iptables off  #禁止开机启动

5.2三台机器关闭selinux
  • 什么是SELinux

    • SELinux是Linux的一种安全子系统
    • Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件
    • SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源

  • 为什么要关闭SELinux

    • 如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux

  • SELinux的工作模式

    • enforcing 强制模式
    • permissive 宽容模式
    • disable 关闭


# 修改selinux的配置文件
[AppleScript] 纯文本查看 复制代码
vi /etc/selinux/config
5.3 三台机器机器免密码登录
  • 为什么要免密登录

    • Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦

  • 免密 SSH 登录的原理

    • 需要先在 B节点 配置 A节点 的公钥
    • A节点 请求 B节点 要求登录
    • B节点 使用 A节点 的公钥, 加密一段随机文本
    • A节点 使用私钥解密, 并发回给 B节点
    • B节点 验证文本是否正确


第一步:三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥
[AppleScript] 纯文本查看 复制代码
ssh-keygen -t rsa
执行该命令之后,按下三个回车即可
第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器
三台机器执行命令:
[AppleScript] 纯文本查看 复制代码
ssh-copy-id node01
第三步:复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
在第一天机器上面指向以下命令
[AppleScript] 纯文本查看 复制代码
scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh

5.4三台机器时钟同步
  • 为什么需要时间同步

    • 因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题


## 安装
[AppleScript] 纯文本查看 复制代码
yum install -y ntp


## 启动定时任务
[AppleScript] 纯文本查看 复制代码
crontab -e
随后在输入界面键入
[AppleScript] 纯文本查看 复制代码
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
6:装辅助软件
6.1 每台主机安装jdk
查看自带的openjdk
[AppleScript] 纯文本查看 复制代码
rpm -qa | grep java
卸载系统自带的openjdk
[AppleScript] 纯文本查看 复制代码
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps
上传jdk并解压然后配置环境变量
所有软件的安装路径
[AppleScript] 纯文本查看 复制代码
mkdir -p /export/servers
所有软件压缩包的存放路径
[AppleScript] 纯文本查看 复制代码
mkdir -p /export/softwares
上传jdk到/export/softwares路径下去,并解压
[AppleScript] 纯文本查看 复制代码
tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/
配置环境变量

[AppleScript] 纯文本查看 复制代码
vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH

修改完成之后记得  source /etc/profile生效
7:Zookeeper
7.1 Zookeeper 的概述
  • Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中 应用系统的一致性问题
  • Zookeeper 是 Google Chubby 思想的一个开源实现
  • Zookeeper 本质上是一个分布式文件系统, 适合存放小文件, 通过文件系统来实现分布式协调

分布式文件系统?
  • 在上图左侧, Zookeeper 中存储的其实是一个又一个 Znode, Znode 是 Zookeeper 中的节点

    • Znode 是有路径的, 例如 /data/host1, /data/host2, 这个路径也可以理解为是 Znode 的 Name
    • Znode 也可以携带数据, 例如说某个 Znode 的路径是 /data/host1, 其值是一个字符串 "192.168.0.1"

  • 正因为 Znode 的特性, 所以 Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以通过操作文件系统的方式操作 Zookeeper

    • 使用路径获取 Znode
    • 获取 Znode 携带的数据
    • 修改 Znode 携带的数据
    • 删除 Znode
    • 添加 Znode
    • 等等...


Zookeeper 是分布式的
首先呢, Zookeeper 是分为服务端和客户端的, 客户端有 Java 的客户端, 有 Shell 命令行的客户端等, 客户端通过一个类似于文件系统的 API 来访问 Zookeeper 集群
但是事实上, 客户端最终是直接访问 Zookeeper 集群, 集群中有两大类角色, 一类是 Leader, 一类是 Follower, 其实就是主从, Leader 负责读和写, Follower 只能读, 遇到会产生修改的请求会转发给 Leader 处理, 这是因为 Zookeeper 本质上就是为了在分布式环境中对消息的一致性的支持, 而 Zookeeper 所基于的 ZAB 协议是 Paxos 协议的一个变种, ZAB 协议中是有一个全局的事务生成者, 就是 Leader, 修改设计到在分布式环境下对事务达成一致, 必须由 Leader 发起
举个例子?
比如说一个常见的分布式主从系统, 如果有 ZK 在的话, 主节点不需要和每个从节点保持连接, 只需要监听从节点创建的 Znode, 便可以知道谁在线
Zookeeper 能做什么?
  • 发布订阅
  • 命名服务
  • 分布式锁
  • 分布式协调

7.2 Zookeeper安装[td]
服务器IP
主机名
myid的值
192.168.174.100node011
192.168.174.110node022
192.168.174.120node033
第一步:下载zookeeeper的压缩包,下载网址如下
http://archive.apache.org/dist/zookeeper/
我们在这个网址下载我们使用的zk版本为3.4.9
下载完成之后,上传到我们的linux的/export/softwares路径下准备进行安装
第二步:解压
解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装
[AppleScript] 纯文本查看 复制代码
cd /export/software
​
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

第三步:修改配置文件
第一台机器修改配置文件
[AppleScript] 纯文本查看 复制代码
cd /export/servers/zookeeper-3.4.9/conf/
​
cp zoo_sample.cfg zoo.cfg
​
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim  zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
第四步:添加myid配置
在第一台机器的
/export/servers/zookeeper-3.4.9/zkdatas /这个路径下创建一个文件,文件名为myid ,文件内容为1
[AppleScript] 纯文本查看 复制代码
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid 
第五步:安装包分发并修改myid的值
安装包分发到其他机器
第一台机器上面执行以下两个命令
[AppleScript] 纯文本查看 复制代码
scp -r  /export/servers/zookeeper-3.4.9/ node02:/export/servers/

scp -r  /export/servers/zookeeper-3.4.9/ node03:/export/servers/
第二台机器上修改myid的值为2
[AppleScript] 纯文本查看 复制代码
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第三台机器上修改myid的值为3
[AppleScript] 纯文本查看 复制代码
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第六步:三台机器启动zookeeper服务
三台机器启动zookeeper服务
这个命令三台机器都要执行
[AppleScript] 纯文本查看 复制代码
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
查看启动状态
[AppleScript] 纯文本查看 复制代码
/export/servers/zookeeper-3.4.9/bin/zkServer.sh  status

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马