一、安装配置HUE(待完成)
二、利用ZooKeeper实现秒杀系统:分布式锁的功能
private static int mNumber = 5;
public static void main(String [] args){
RetryPolicy policy = new ExponentialBackoffRetry(10,1000);
//创建一个zk客户端
CuratorFramework cf = CuratorFrameworkFactory.builder()
.connectString("10.1.255.132:2181")
.retryPolicy(policy)
.build();
//启动客户端
cf.start();
//由一个ZK中定义一把锁
final InterProcessMutex lock = new InterProcessMutex(cf,"/mylock");
for(int i =0 ;i<10;i++){
new Thread(new Runnable() {
@Override
public void run() {
//请求得到锁,如果没有得到 使用后 retry中重试
try {
lock.acquire();
getNumber();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
lock.release();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
}
private static void getNumber() {
System.out.println("-----业务方法开始----");
System.out.println("当前值:"+mNumber);
mNumber--;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("-----业务方法结束!!!!!!!!----");
}
三、搭建ZooKeeper集群(建议使用Maven搭建环境)
1、在bigdata112上搭建
tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training/
环境变量
ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
export ZOOKEEPER_HOME
PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
核心的配置文件 conf/zoo.cfg
dataDir=/root/training/zookeeper-3.4.10/tmp
server.1=bigdata112:2888:3888
server.2=bigdata113:2888:3888
server.3=bigdata114:2888:3888
在/root/training/zookeeper-3.4.10/tmp下创建一个文件 myid
1
将配置好的ZK复制到其他节点上
scp -r zookeeper-3.4.10/ root@bigdata113:/root/training
scp -r zookeeper-3.4.10/ root@bigdata114:/root/training
修改bigdata113和bigdata114上的myid文件
每台机器启动ZK
四、实现Hadoop的HA
1、隔离机制和隔离级别
(*)关系型数据库:如果不考虑事务隔离级别,造成脏读、不可重复读、幻读
(*)HDFS的HA:如果不考虑隔离机制(隔离级别),造成脑裂的问题
2、什么是脑裂的问题?
脑裂的问题,针对的是数据节点(DataNode)
由于某种原因,造成了整个HDFS中存在多个active的NameNode,这时候DataNode就不知道谁是真正的NameNode。
3、对于ResourceManager的HA,需要手动在另一个节点上启动一个ResourceManager
yarn-daemon.sh start resourcemanager
五、HDFS(NameNode)的联盟:Federation
1、也有多个NameNode
2、跟HA的区别:这些NameNode都是active状态
3、作用:
(1)缓存更多元信息
(2)实现负载均衡