大数据基础环境搭建

实验环境:

Centos7 
Xshel

安装包版本:

hadoop-2.7.3.tar.gz
apache-hive-2.1.1-bin.tar
hbase-1.2.4-bin.tar.gz
jdk-8u171-linux-x64.tar.gz
mysql-connector-java-5.1.47-bin.jar
scala-2.11.12.tgz
spark-2.4.0-bin-hadoop2.7.tgz
zookeeper-3.4.10.tar.gz

基础环境搭建及Zookeeper搭建

详细的图文教程可以参考我的其他博客

修改主机名

本次集群搭建共有三个节点,包括一个主节点master,和两个从节点slave1和slave2。具体操作如下 :

1.以主机点master为例,首次切换到root用户:su
2.修改主机名为master:
hostnamectl set-hostname <hostsname>
3.永久修改主机名,编辑/etc/sysconfig/network文件,内容如下:

NETWORKING=yes 
HOSTNAME=master 

保存该文件,重启计算机:reboot
查看是否生效:hostname

配置hosts文件

使各个节点能使用对应的节点主机名连接对应的地址。
hosts文件主要用于确定每个结点的IP地址,方便后续各结点能快速查到并访问。在上述3个虚机结点上均需要配置此文件。由于需
要确定每个结点的IP地址,所以在配置hosts文件之前需要先查看当前虚机结点的IP地址是多少.

1.可以通过ifconfig命令进行查看
2.查看节点地址之后将三个节点的ip地址以及其对应的名称写进hosts文件。这里我们设置为master、slave1、slave2。注意保存退出。

关闭防火墙

centos7中防火墙命令用firewalld取代了iptables,当其状态是dead时,即防火墙关闭。

关闭防火墙:systemctl stop firewalld 
查看状态:systemctl status firewalld 

配置时间同步

时间同步

配置SSH免密码登陆

SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可
靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取
数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要
进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通
过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行
验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提
高访问效率。

  1. 每个结点分别产生公私密钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa(三台机器)
    秘钥产生目录在用户主目录下的.ssh目录中,进入相应目录查看:cd .ssh/

2.Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件:(仅master)
cat id_dsa.pub >> authorized_keys(注意在.ssh/路径下操作)

  1. 在主机上连接自己,也叫做ssh内回环。
    ssh master

  2. 让主结点master能通过SSH免密码登录两个子结点slave。(slave中操作)
    为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样当master就可以顺利安全地访问这两个slave结点了。

slave1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,且重命名为master_das.pub,这一
过程需要密码验证。

scp master:~/.ssh/id_dsa.pub ./master_das.pub

将master结点的公钥文件追加至authorized_keys文件。

cat master_dsa.pub >> authorized_keys
这时,master就可以连接slave1了。

slave1结点首次连接时需要,“yes”确认连接,这意味着master结点连接slave1结点时需要人
工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。

同理slave2中也是这么操作。

注意:两个结点的ssh免密码登录已经配置成功,还需要对主结点master也要进行上面的同
样工作,因为jobtracker有可能会分布在其它结点上,jobtracker有不存在master结点上的可能性。
在上一步骤中,我们已经进行过此操作,这里仅做提醒。

JDK简介及其安装

1.首先建立工作路径/usr/java

mkdir -p /usr/java 
tar -zxvf /opt/soft/jdk-8u171-linux-x64.tar.gz -C /usr/java/ 

2.修改环境变量

修改环境变量:vi /etc/profile

添加内容如下:

export JAVA_HOME=/usr/java/jdk1.8.0_171 
export CLASSPATH=$JAVA_HOME/lib/ 
export PATH=$PATH:$ JAVA_HOME/bin 
export PATH JAVA_HOME CLASSPATH

生效环境变量:source /etc/profile
查看java版本:java -version

同理slave节点,相同安装步骤。
注意:如果在slave节点中安装较慢,可以使用scp命令,将相同的文件从master中复制过来。
在master中将JDK复制到slave2中.

Zookeeper简介

Zookeeper工作原理

ookeeper字面上理解就是动物管理员,Hadoop生态圈中很多开源项目使用动物命名,例如:Hive(蜜蜂)、Pig(小猪)。这就需要一个管理员来管理这些“动物”。在集群的管理中Zookeeper起到非常重要的角色负责分布式应用程
序协调的工作——它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务
和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。

   1.客户端可以连接到每个server,每个server的数据完全相同。  
   2.每个follower都和leader有连接,接受leader的数据更新操作。 
   3.Server记录事务日志和快照到持久存储。  
   4.大多数server可用,整体服务就可用。 

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和Leader的状态同步以后,恢复模式就结束了。状态同步保证了Leader和Server具有相同的系统状态。

为了保证事务的顺序一致性,Zookeeper采用了递增的事务ID号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。zxid是一个64位的数字,它高32位是epoch用来标识Leader关系是否改变,每次一个Leader被选出来,它都会有一个新的epoch,标识当前属于那个Leader的统治时期。低32位用于递增计数。

每个Server在工作过程中有三种状态:

LOOKING:当前Server不知道Leader是谁,正在搜寻; 
LEADING:当前Server即为选举出来的Leader; 
FOLLOWING:leader已经选举出来,当前Server与之同步。 

Zookeeper的出现解决了这个问题。首先Zookeeper简化了一个选举算法,实现原子广播协议,简称Zab协议。举个例子:
一个Zookeeper集群有一个Leader,其他的都是Follower跟随者(或者Observer观察者),这个Leader是怎么选举出来的呢?一开始三台机器ABC,分别启动Zookeeper以后,发现没有Leader,就提议进行Leader选举,只要半数以上通过就算成功,过程为:

A提案说,我要选自己,B你同意吗?C你同意吗?B说,我同意选A;C说,我同意选A。(注意,这里超过半数了,其实在现实世界
选举已经成功了。但是计算机世界是很严格&#x
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值