第0次课 子节点设置和网络设置
在终端打开
(1)设置网络
vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
IPADDR=192.168.183.150
NETMASK=255.255.255.0
GATEWAY=192.168.183.1
DNS1=192.168.183.1
按esc :wq
(2)设置主机名称
vim /etc/sysconfig/network
(3)重新启动网络
service network restart
(4)设置IP与主机名的映射关系
vim /etc/hosts
192.168.183.150 hadoop01
(5)配置主机的网络
(6)用SecureCRT连接虚拟机
SSH2 连接到了192.168.183.150 这台主机上
(7)关闭虚拟机的防火墙
在SecureCRT上 service iptables status
service iptables stop
#检验防火墙状态 chkconfig iptables --list
#把防火墙的自动启动关闭 chkconfig iptables off
(8)linux上安装软件的方法
yum install -y lrzsz
rz 是在上传哪些文件
sz install.log 就把文件下载到了本地 我的下载里面
(9)下载jdk
mkdir /bigdata
cd /bigdata
#上传jdk linux64位版本
ll
tar -zxvf jdk-8u151-linux-x64.tar.gz
#修改 jdk-8u151-linux-x64.tar.gz的属组
chown -R root:root jdk1.8.0_151
(10)配置jdk的环境变量
#查看当前jdk的版本和位置
rpm -qa|grep jdk
yum -y remove java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
yum -y remove java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
#先创制软连接
ln -s /bigdata/jdk1.8.0_151 /usr/local/jdk
#配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:${JAVA_HOME}/bin
#重新编译环境变量文件,使其生效
source /etc/profile
java -version
(11)对克隆虚拟机的修改(克隆过程略)
#修改克隆虚拟机的硬件地址和IP
启动hadoop02
#查看当前克隆的虚拟机的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
把UUID删除掉
把HWADDR删除掉
把IPADDR改成 192.168.183.151
保存退出
vim /etc/udev/rules.d/70-persistent-net.rules
把hadoop01的 “eth0”那一行删掉
把hadoop02的“eth1”那一行的“eth1”改成"eth0"
#修改克隆虚拟机的名称
vim /etc/sysconfig/network
把hadoop01改成hadoop02
#修改IP和主机的映射关系
vim /etc/hosts
添加
192.168.183.151 hadoop02
保存退出
重启hadooop02
在SECURE 02中先连接hadoop02 再查看主机名和IP地址
hostname
ifconfig
第1次课 大数据实战第一课 hadoop生态圈与应用实战
1 大数据处理流程
第一步:数据采集
收集公开或隐私的数据,部署应用程序,运行日志
提取、转换、加载操作属于ETL的过程
通常用Flume收集数据
第二步:数据存储:通过HDFS,或者Kafka存储通过日志收集的数据
第三步:把存储资源和计算资源合理分配和利用,通过YARN来执行
第四步:数据计算
通过批处理Mapreduce,流处理SparkStreaming,交互式分析(SparkSQL)进行数据的计算
第五步,数据分析
Hive,SparkMLLib,Druid
第六步,展示数据分析结果
Cboard,Echart
2.分布式系统的特点与存在的问题
并发性,同等,与并发性,缺乏全局时钟
当某个节点存在通讯异常时,不能执行存储任务或处理任务,造成脑裂,同时还存在超时,请求失败等问题
3.分布式CAP定理
动物园管理可以保证 分区容错,可用性和数据的最终一致性。
Zookeeper不能保证两个客户端能同时得到更新的数据,如果想强制数据同步,需要在读数据之前调用syne()接口来实现。
Zookeeper更新一次数据要么成功,要么失败。
4动物园管理 机器节点数/2取整+1大于一半的节点数,仍然可以保证数据的可用性。
4.1动物园管理的架构,
领导者 是从跟随者节点选举出来的,为客户端提供读写服务和发起选举;事务请求的唯一调度者和处理者。
学习者
跟随者 负责客户端的读请求服务,如果接收到写请求,就转发给领导节点。
观察者 只负责领导者的的状态同步,接收客户端的读请求,不参与选举投票,提高系统读的功能。如果观察者挂掉了,就从跟随者中选举一个结点
作为领导节点。
4.2 动物园管理的数据写入
遵循动物园通过原子消息广播实现数据一致性。
处理写请求:
客户端接收到写请求,跟随者把写请求转发给领导,领导发起广播事务提议,广播告知所有的跟随者。在广播之前,为这个事务分配
一个全局的,单调递增的全局ID(zxid),将这个zxid和事务体绑定在一起,组成消息体。
领导者把这个消息体为每个跟随者创建一个队列。在每个队列中放入应该处理的消息。在发送消息的时候,遵循先入先出的原则。先放入队列的先被广播出去,广播给跟随者。跟随者接收到领导者的提议后,以日志的形式写入到本地磁盘,给领导者返回一个响应。
领导者接收到半数的相应后,就会广播给所有的跟随者:其他的跟随者该提交事务了,它自身也会提交事务。当跟随者都提交事务后,就会把客户端发起写的请求结果返回给客户端。
处理读请求:
客户端连接到 发起读请求,跟随者返回结果;如果强制跟随者和领导者数据同步,需要调用syne()接口。
4.3动物园管理的选举过程
LOOKING,LEADING,FOLLOWING,OBSEREVER
事务ID是全局有序分配的,负责节点的创建,内容更新和删除
全新启动和运行过程中的选举过程
全新启动
每台机器写入一个机器号码:ZK1,ZK2,ZK3(1-255之间的数)
选举过程中,
ZK1,ZK2会发起消息:(机器号,事务ID),例如(1,0)作为一个消息体广播出去。
两台机器的消息进行对比。谁的事务ID大,谁当领导者;其次对比机器号,机器号大的作为领导者。
机器1更新自己的广播消息
ZK2发现自己和ZK1都选了ZK2一票。
两台电脑更改状态
ZK1 把looking更改为following;
ZK2 把following更改为leading。
ZK3发现系统中已经有了领导者ZK2
那么它自己就没有当领导者的事务请求了。
运行过程中的选举过程
假设ZK2挂掉了,在ZK1和ZK3中进行选举,选取的过程同全新过程,先比较事务ID,再比较机器号,大的作为领导。
4.4 Zookeeper的数据模型
Zookeeper下提供了Znode的树形结构。Znode是数据节点,可以存数据,构造文件夹,还可以创造子node
Znode
持久节点
持久顺序节点
临时节点
临时顺序节点 临时会话生成的 当会话失败后,会自动删除
4.4保证节点的数据不被修改
通过 悲观锁(数据更新,竞争十分激烈,每一个数据运行全程都需要加锁) 乐观锁(在数据更新和提交之前,是否有其他事务对它进行了修改。数据冲突较少的场景:数据读取,写入校验,数据写入)来实现
4.5 Znode的状态
4.6 看护(Watcher)机制
包括Client, Zookeeper集群, Watcher三个部分。
客户端向Zookeeper注册监听事件,同时创建watcher对象,将watcher对象存储在WatchManager中。WatchManager会第一时间通过回调函数处理这个事件。
4.7统一命名服务
4.8配置管理
Znode的数据修改,监听的客户端会第一时间更新自己的信息。
4.9集群管理
通过动物园管理感知到节点的挂掉,就让给节点下线;也会感知到新的节点上线,并让其作为新的集群的节点。
网友评论