挂载zookeeper到文件系统 (mount zookeeper)

  1. zookeeper源码包中提供一个小工具zkfuse,可以用于将zookeeper挂载到文件系统,本文介绍编译及使用这个小工具的方法,并附有此小工具的部分改进及Bug修复代码。

  2. 编译使用zookeeper-3.4.6版本,从官网下载源码包: wget http://apache.fayea.com/apache-mirror/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

  3. 解压后在zookeeper-3.4.6/src/contrib/zkfuse可找到zkfuse代码。

  4. 进入zookeeper-3.4.6/src/contrib/zkfuse,查看README.txt,里面有如下提示:

    ZooKeeper FUSE (File System in Userspace)
    =========================================Pre-requisites
    --------------
    1. Linux system with 2.6.X kernel.
    2. Fuse (Filesystem in Userspace) must be installed on the build node.
    3. Development build libraries:a. fuseb. log4cxxc. pthreadd. boost
    

    根据上面的文字提示,编译zkfuse需要的依赖包有:fuse、log4cxx、pthread、boost

    在ubuntu 14.04下,fuse、boost、log4cxx均可用apt-get快速安装,pthread为系统自带支持,无需安装:

    sudo apt-get install libfuse-dev
    sudo apt-get install libboost-dev
    sudo apt-get install liblog4cxx-dev
    

    以上软件包均有源码包下载,其他版本的Unix/Linux系统可如无快速安装方法,可使用源码安装。

  5. 安装Zookeeper C Api

    zkfuse的编译需要依赖Zookeeper C Api,此步在zookeeper-3.4.6/src/c下完成

    cd zookeeper-3.4.6/src/c
    ./configure
    make
    sudo make install    # 确保有足够权限
    
  6. 编译zkfuse

    此步在zookeeper-3.4.6/src/contrib/zkfuse下,按README.txt中的提示做即可:

    Build instructions
    ------------------
    1. cd into this directory
    2. autoreconf -if
    3. ./configure
    4. make
    5. zkfuse binary is under the src directory
    

    如果未安装autoreconf,则先sudo apt-get install autoconf安装好。

    cd zookeeper-3.4.6/src/contrib/zkfuse
    autoreconf -if
    ./configure
    make
    

    自动生成的makefile可能会有点小问题,如果编译提示类似如下内容:

    undefined reference to `ZOO_CHILD_EVENT'
    undefined reference to `ZOO_CREATED_EVENT'
    undefined reference to `zoo_exists'
    

    则将src/Makefile中:

    LIBS = -lulockmgr -lnsl -lrt -lpthread -llog4cxx -lfuse
    

    修改添加上-lzookeeper_mt

    LIBS = -lulockmgr -lnsl -lrt -lpthread -llog4cxx -lfuse -lzookeeper_mt
    

    再次make,就能编译成功。

    生成的可执行文件在 src/zkfuse 下

  7. 使用zkfuse挂载zookeeper到文件系统

    README.txt中有如下使用说明:

    Testing Zkfuse
    --------------
    1. Depending on permission on /dev/fuse, you may need to sudo -u root.* If /dev/fuse has permissions 0600, then you have to run Zkfuse as root.* If /dev/fuse has permissions 0666, then you can run Zkfuse as any user.
    2. Create or find a mount point that you have "rwx" permission. * e.g. mkdir -p /tmp/zkfuse
    3. Run Zkfuse as follows:zkfuse -z <hostspec> -m /tmp/zkfuse -d-z specifies ZooKeeper address(es) <host>:<port>-m specifies the mount point-d specifies the debug mode.For additional command line options, try "zkfuse -h".
    

    zookeeper-3.4.6/src/contrib/zkfuse下,执行:

    # 本例中zookeeper部署在127.0.0.1:2181端口
    su root
    mkdir -p /zkfuse
    nohup ./zkfuse -z 127.0.0.1:2181 -m /zkfuse -d >> zkfuse.log 2>&1 &
    

    清除挂载的话,需要kill掉zkfuse进程,然后umount挂载点(本例中为:umount /zkfuse

  8. zkfuse已知BUG修复

    目前实测,zkfuse一处BUG:读取数值为NULL的结点会coredump挂掉 另外zkfuse只支持大小不超过1k的结点,这是在代码中一处宏定义决定的,所以此处对zkfuse做了一些改造和BUG修复,改动的文件如下,可直接拷贝到zookeeper-3.4.6/src/contrib/zkfuse/src覆盖源文件即可修复。

挂载zookeeper到文件系统 (mount zookeeper)相关推荐

  1. ZooKeeper学习第一期---Zookeeper简单介绍(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技 ...

  2. k8s部署zookeeper集群 运行 ZooKeeper, 一个 CP 分布式系统

    本教程展示了在 Kubernetes 上使用 StatefulSets,PodDisruptionBudgets 和 PodAntiAffinity 特性运行 Apache Zookeeper. 准备 ...

  3. centos7 安装git_如何在 CentOS 7 上挂载 Amazon EFS 文件系统?

    如何为数千个 Amazon EC2 实例提供大规模并行共享访问模式? 在本周,为大家做的分享是关于如何在 CentOS 7 上挂载 Amazon EFS 文件系统.Amazon EFS 可以让您的应用 ...

  4. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...

  5. [转载]Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...

  6. oracle文件系统挂载点,挂载和取消挂载 Oracle Solaris 文件系统

    挂载和取消挂载 Oracle Solaris 文件系统 ZFS 文件系统可自动进行挂载和取消挂载.通过挂载传统 UFS 文件系统可使该文件系统可用,这会将文件系统附加到指定挂载点的系统目录树.始终会挂 ...

  7. android文件系统挂载过程,有线挂载Android4.2文件系统

    注意:在挂载Android4.2文件系统调试前,一定要将平板的Android系统中的"设置"功能中的"wifi"功能选择"关闭",如图所示 ...

  8. linux文件挂载和卸载命令,Linux基础命令(八)——挂载、卸载文件系统

    前言:在Linux系统中,对各种存储设备中的资源访问(如读取.保存文件等)都是通过目录结构进行的,虽然系统核心能够通过"设备文件"的方式操纵各种设备,但是对于用户来说,还需要增加一 ...

  9. 【转】ZooKeeper学习第二期--Zookeeper命令操作

    一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...

最新文章

  1. CUMCM:05B  DVD在线租赁
  2. python取出字典中的所有值的两种方法
  3. [转载] 列表、元组及通用序列操作
  4. nginx负载均衡分发请求的几种方式
  5. 如何用libpng输出一个编辑后的png图片?
  6. 阿里云安装宝塔打不开 已经开放安全组_centOS7 apache安装PHPMYADMIN
  7. 记录一个很好用的截图软件greenShot
  8. 输入文本自动生成图像,太好玩了!
  9. 用javaScript制作星空特效
  10. Android TV 焦点控制
  11. SwiftUI 控件
  12. java自动发图文微博_自动发带图的微博
  13. Python加密与解密
  14. java 从控制台输入一个正整数_编程输出该正整数各位数字之和_C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和...
  15. [转]看恐怖片能减肥
  16. Netty下的消息群发
  17. 使用CStdioFile操作文件和filetxt.cpp报错和filecore.cpp报错
  18. iOS 集成FaceId和TouchID
  19. php办公网聊天室,使用phpFreeChat在您的网站上运行聊天室 | MOS86
  20. java发展的前景到底如何?

热门文章

  1. DirectX11--实现一个3D魔方(1)
  2. shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
  3. java.lang.UnsupportedClassVersionError: org/apache/activemq/spring/ActiveMQConnectionFactory : Unsup
  4. 被全球过度炒作的Spotify敏捷部落制,连Spotify公司自己都不用
  5. 扩充C盘(将D盘的内存分给C盘)
  6. QQ2013协议分析(解密篇)
  7. GVS视声引入睿住资本,完成A轮融资
  8. 对web网站模拟压力测试
  9. 清华非全日制计算机硕士,2021年清华大学硕士招生分析,专硕非全日制占比高达67%...
  10. 边城科技“区块链+溯源”平台助力坪朗豆腐品牌升级