ZooKeeper

本文介绍如何使用Java API操作ZooKeeper的基本方法,包括创建、读取、更新和删除ZNode等,并详细展示了Hadoop与ZooKeeper集成的过程,如配置、免密钥设置及各组件的启动步骤。
package com.shujia.ZooKeeper;

import org.apache.zookeeper.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class Demo01ZKAPI {
    ZooKeeper zk;
    //建立连接
    @Before
    public void init() throws IOException {
        zk = new ZooKeeper("master:2181,node1:2181,node2:2181", 500000, null);
    }

    @Test
    //创建一个ZNode
    public void createZNode() throws InterruptedException, KeeperException {
        /**
         * CreateMode:
         * PERSISTENT 永久保存
         * EPHEMERAL 在连接断开的时候会自动将创建的ZNode删除
         */
        zk.create("/test",
                "10".getBytes(),
                ZooDefs.Ids.OPEN_ACL_UNSAFE,
                CreateMode.PERSISTENT
        );
    }

    @Test
    //创建一个ZNode
    public void createEPHEMERALZNode() throws InterruptedException, KeeperException {
        /**
         * CreateMode:
         * PERSISTENT 永久保存
         * EPHEMERAL 在连接断开的时候会自动将创建的ZNode删除
         */
        zk.create("/test1",
                "20".getBytes(),
                ZooDefs.Ids.OPEN_ACL_UNSAFE,
                CreateMode.EPHEMERAL
        );
            while(true){
            //避免zk连接自动关闭
        }
    }

    //获取指定的ZNode上的值
    @Test
    public void getData() throws InterruptedException, KeeperException {
        byte[] data = zk.getData("/test1", null, null);
        System.out.println(new String(data));
    }

    //修改指定ZNode的值
    @Test
    public void setData() throws InterruptedException, KeeperException {
        zk.setData("/test","11".getBytes(),-1);
    }

    //删除指定ZNode
    @Test
    public void DeleteZNode() throws InterruptedException, KeeperException {
        zk.delete("/test",-1);
    }

    //观察者
    @Test
    public void setWatcher() throws InterruptedException, KeeperException {
        //判断指定的ZNode是否存在,并且可以指定一个Watcher
       zk.exists("/test", Event -> {
           System.out.println(Event.getPath());
           System.out.println(Event.getState());
           System.out.println(Event.getWrapper());
           System.out.println(Event.getType());
           System.out.println("捕捉到ZNode的变化,触发了事件");
       });
       while(true){
           //避免ZK连接自动断开
       }
    }

    @After
    //关闭连接
    public void close() throws InterruptedException {
        zk.close();
    }

}

        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


1、防火墙
    service firewalld stop
2、时间同步
    yum install ntp
    ntpdate -u s2c.time.edu.cn
    
    或者
    date -s 20180503

3、免密钥   (远程执行命令)
    在两个主节点生成密钥文件
    ssh-keygen -t rsa
    ssh-copy-id ip

    master-->master,node1,node2
    node1-->master,node1,node2

4、修改hadoop配置文件
先停止HDFS集群:stop-dfs.sh
再修改
    core-site.xml
    hdfs-site.xml


    同步到其它节点
        cd /usr/local/soft/hadoop-2.7.6/etc/hadoop
        scp ./* node1:`pwd`
        scp ./* node2:`pwd`

5、删除hadoop数据存储目录下的文件  每个节点都需要删除
     rm -rf /usr/local/soft/hadoop-2.7.6/tmp

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

7、启动JN   存储hdfs元数据
     三台JN上执行 启动命令: 
     /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

[root@master data]# hadoop-daemon
hadoop-daemon.sh   hadoop-daemons.sh  
[root@master data]# hadoop-daemon.sh start namenode
starting namenode, logging to /usr/local/soft/hadoop-2.7.6/logs/hadoop-root-namenode-master.out


 

标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结和评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值