前言

在我刚开始接触分布式集群的时候,是自己在几台虚拟机中手动安装的 Hadoop 和 Spark ,所以当时对 Hadoop 的配置有个简单的印象 ,但是后面发现了 Cloudera 和 Ambari 之后(两个分布式集群自动管理工具),就再没有手动安装过。这就导致我用了很久的 Accumulo 却从未手动安装过,使用 Cloudera 安装导致我根本没有关心 Accumulo 是怎么从无到有冒出来的,只是简单了解了安装的大概过程,并学会了如何使用它。

今天不同,当我再次安装 Cloudera 集群的时候,首先选择了 Ubuntu 16.04 操作系统进行安装(是的,我是个非常愿意尝试新鲜事物的人),无耐装好之后才发现使用 16.04 导致 Accumulo 的安装包(Parcel)根本无法进行集群内的分发,这就意味着我无法安装它,折腾了半天之后未果,当然自己也有想着手动安装一下算了,但是懒惰的本性让我打消了这个念头,我不愿意冒着折腾半天未必能成功的风险去手动安装,因为我有更好的解决方案——只需要将操作系统退回到 14.04 即可,因为我有多次在 14.04 上安装成功的经验,所以胸有成竹。但气愤的是不知什么问题,整个集群安装成功之后在安装 Accumulo 的时候一直报错,报错的原因是环境变量的问题,用惯了集群,我根本不知道这个问题应当如何解决,多次折腾未果。把人逼到绝路的时候,也就是应当改变的时候了,于是只能走上手动安装,这就有了今天这篇文章。

安装过程

打开 Accumulo 官网,很自然的先去找 quickstart,网址为:http://accumulo.apache.org/quickstart-1.x/。文档里写的很清楚,但是刚接触的人(比如我这个貌似老手的新手),也会有点不知所云,学习的最好方式就是去尝试,于是我毫不犹豫的就按照提示步骤执行下去。

首先是下载,无需多言,在 http://accumulo.apache.org/downloads/ 中选择自己想要安装的版本即可。

下载完后,解压缩并进入目录,前几步都没有问题,按照要求执行即可,当走到 Initialization 的时候一直在报错,折腾了许久才慢慢明白怎么回事,解决问题的过程也就对 Accumulo 和 Accumulo 的安装有了更加清晰的认识,知道了 Accumulo 到底是怎么回事。

安装过程中的难点主要在于配置 conf/accumulo-site.xmlconf/accumulo-env.sh 这两个文件,要配置好这两个文件就要对 Cloudera 和基础的 Hadoop 有了解。我先来介绍一下这两个文档如何修改,再来对修改的原因和整体做一介绍。

  • conf/accumulo-site.xml

instance.volumes 改为 hdfs://master:8020/accumulo,master 为 hadoop namenode 节点的

IP 或者 hostname,8020 为 cdh 环境下的 HDFS 端口;将 instance.zookeeper.host 修改为 zk1:2181,zk2:2181,zk3:2181,其中 zk1-3 为 zookeeper 的节点 IP 或 hostname,当然不一定是 3 个,根据自己的情况而定;将 trace.token.property.password 修改为你想要设置的密码;将 general.classpaths 修改如下:

  1. $ACCUMULO_HOME/lib/accumulo-server.jar,
  2. $ACCUMULO_HOME/lib/accumulo-core.jar,
  3. $ACCUMULO_HOME/lib/accumulo-start.jar,
  4. $ACCUMULO_HOME/lib/accumulo-fate.jar,
  5. $ACCUMULO_HOME/lib/accumulo-proxy.jar,
  6. $ACCUMULO_HOME/lib/[^.].*.jar,
  7. $ZOOKEEPER_HOME/zookeeper[^.].*.jar,
  8. $HADOOP_CONF_DIR,
  9. $HADOOP_PREFIX/share/hadoop/common/[^.].*.jar,
  10. $HADOOP_PREFIX/jars/[^.].*.jar,
  11. $HADOOP_PREFIX/share/hadoop/common/lib/(?!slf4j)[^.].*.jar,
  12. $HADOOP_PREFIX/share/hadoop/hdfs/[^.].*.jar,
  13. $HADOOP_PREFIX/share/hadoop/mapreduce/[^.].*.jar,
  14. $HADOOP_PREFIX/share/hadoop/yarn/[^.].*.jar,
  15. $HADOOP_PREFIX/share/hadoop/yarn/lib/jersey.*.jar

主要是添加 $HADOOP_PREFIX/jars/[^.].*.jar 项,这个文件中存放了与 hadoop 有关的所有 jar 包,注意匹配处必须写为 [^.].*.jar,直接写通配符 *.jar 不能正常工作,这涉及到正则表达式,具体可以查阅相关资料。

  • conf/accumulo-env.sh

设置 HADOOP_PREFIX/opt/cloudera/parcels/CDH-5.11.2-1.cdh5.11.2.p0.4,最后一级目录根据安装版本不同会发生变化;设置 JAVA_HOME/usr/jdk1.8.0_*,此处是自己安装的 jdk 目录,安装 jdk 查阅相关资料,JDK1.8应该是个不错的选择;设置 ZOOKEEPER_HOME/opt/cloudera/parcels/CDH/lib/zookeeper;设置 HADOOP_CONF_DIR/etc/hadoop/conf

完成上述两个文件的修改,在接着官方文档执行即可,所以整个步骤其实非常简单。下面我来分析一下整个安装过程并通过安装过程简单分析一下 Accumulo 的大概工作原理。

分析

在下载并解压完压缩包之后会执行 ./bin/bootstrap_config.sh,其实这一步的目的就是为了生成和简单配置上面要修改的两个文件,整个安装过程的核心也在上面的两个文件,先来看一下 conf/accumulo-env.sh 文件要修改的内容,其实就是 Hadoop 安装路径、JDK 路径和 Zookeeper 安装路径,这三个路径刚好说明了 Accumulo 的工作原理:基于 JDK 通过 Zookeeper 进行集群调度,并将自己的数据保存到 HDFS 中,就像普通的数据库数据保存在文件系统中,Accumulo 将数据保存到 HDFS 中,这样就实现了分布式数据库。由于我是采用 CDH 安装的 Hadoop 集群,所以 HADOOP_PREFIXZOOKEEPER_HOME 是固定的,Cloudera 通过 pacel 管理集群,所以其安装路径都是在 /opt/cloudera/parcels 文件夹下。

知道了上面这些也就明白了 conf/accumulo-site.xml 的修改原因,instance.volumes 指定了 HDFS 节点,使得 Accumulo 能够正常访问 HDFS;instance.zookeeper.host 指定了 zookeeper 集群的路径,使得 zookeeper 能够管理 accumulo;general.classpaths 指定了 Accumulo 工作的 jar 包。

总结

在我尝试手动安装 Accumulo 并成功之后,我才发现 Accumulo 并不复杂。一切事情都是这样,你想象中很复杂或者惧怕的事情其实只要你动手去实践、一点点去突破就会慢慢的解决,当然一切看似简单的事情也都会有各种各样的问题,只有亲自去尝试才是解决问题和发现问题的最好方式。

纸上得来终觉浅,绝知此事要躬行!共勉

安装Accumulo——突破自己,就是成长的更多相关文章

  1. 零碎记录Hadoop平台各组件使用

    >20161011 :数据导入研究    0.sqoop报warning,需要安装accumulo:    1.下载Microsoft sql server jdbc, 使用ie下载,将42版j ...

  2. GeoMesa-单机搭建

    系统安装 CentOS部署 新建虚拟电脑 类型:Linux 版本:Red Hat(64-bit) 创建虚拟硬盘 [x] 动态分配(磁盘占用较小) [ ] 固定大小(使用起来较快) 安装设置(设置roo ...

  3. 架构师成长之路2.2-PXE+Kickstart安装部署

    点击返回架构师成长之路 架构师成长之路2.2-PXE+Kickstart安装部署 系统测试环境: 实验环境:VMware Workstation 12 系统平台:CentOS Linux releas ...

  4. 架构师成长之路5.1-Saltstack安装及入门

    点击架构师成长之路 架构师成长之路5.1-Saltstack安装及入门 (安装.配置.启动) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需 ...

  5. 我的Python成长之路---GitHub使用之注册GitHub并安装Git客户端

    一.注册GitHub账号 进入GitHub官方网站,输入用户名.邮箱地址及密码,点击“Sign up for GitHub”. 选择免费的,不要问我为什么,除非有钱任性选择付费版 验证邮箱地址并激活G ...

  6. linux小白成长之路1————通过Parallels安装CentOS虚拟机

    以下是通过Mac版Parallels安装CentOS虚拟机的教程: 1.在Parallels向导中选择"下载CentOS",点击"继续":  2.点击&quo ...

  7. linux小白成长之路2————yum安装火狐浏览器

    1.使用终端: CentOS左上角:应用程序>收藏>终端  2.使用root权限安装软件: 输入:sudo -i 输入密码(上篇安装linux虚拟机时设定的登录密码,也是超级管理员密码) ...

  8. linux小白成长之路4————centos7配置自动更新安装安全补丁

    [内容指引] 安装yum-cron; 修改配置:nano: 手工启动服务: 将服务设置为开机自动启动. 为保证linux系统的安全性以及稳定性,可以使用yum-cron服务自动更新: 1.安装yum- ...

  9. linux小白成长之路6————安装Java+Apache(httpd)+Tomcat

    [内容指引] 安装Java环境: 查看JDK版本: 安装Apache(httpd); 安装Tomcat: 设置服务开机启动. 1.安装Java环境 指令: yum intall java-1.8.0* ...

随机推荐

  1. 在SpringBoot使用Druid进行数据监控

    前言 之前在构建项目初始设计的时候在选择数据库连接的时候就看到Druid有这样的强大的功能.数据监控.对于一个项目来说,数据监控特别重要,之前使用对于数据库的监控都是通过mysql的日志等系统来完成的 ...

  2. 网站入住各大搜索引擎的seo优化技巧

    最近在公司上班的时候做了一个工业物联网的项目,上层主管提出要求,让这个网站入住各大搜索引擎,也就是说在各大搜索引擎中输入与网站相关的关键字就能搜索到我们自己的网站.刚开始自己一脸懵逼,因为之前自己并没 ...

  3. 深刻理解iosBlock

    深刻理解iosBlock ///一个控制器里的方法 - (void)setRefreshHeader { ACWeakSelf(self); self.tableView.mj_header = [M ...

  4. (2018干货系列一)最新Java学习路线整合

    怎么学Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. 话不多说,直接上干货: ...

  5. linux驱动---用I/O命令访问PCI总线设备配置空间

    PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能 力.但是PCI总线的编程技术,也就是对PCI总线设备的操 ...

  6. 小说接入UC浏览器内核技术对话(一)

    质辛@灿岩 质辛跟我们说一下那个删除文件的逻辑吧质辛@灿岩  应该不是删除cache下所有文件吧?质辛@智鹰  提供一下我们的临时文件完整路径给 灿岩吧质辛@智鹰  是负责我们ucsdk的 技术对接灿 ...

  7. 【javascript】jQuery判断用户右击事件

    jquery 判断用户是鼠标是右击还是左击, // 1 = 鼠标左键 left; 2 = 鼠标中键; 3 = 鼠标右键 $(document).mousedown(function(e) { if(3 ...

  8. PHP simpleXML文件编程

    SimpleXML simpleXML该技术的核心思想是以面向对象的方式来操作xml文件 <?php //simplexml文件 讲所有的元素转成对象 $library=simplexml_lo ...

  9. 父页面(JSP页面)传参数到子页面(JSP页面)

    父页面(JSP页面)传参数到子页面(JSP页面) 1.父页面传参数到子页面 //JavaScript代码 $.ajax({ type:"POST", uri:"../st ...

  10. 嵌入式Linux基于framebuffer的jpeg格式本地LCD屏显示

    在基于Linux的视频监控采集系统中,摄像头采集到的一帧视频图像数据一般都是经过硬件自动压缩成jpeg格式的,然后再保存到摄像头设备的缓冲区.如果要把采集到的jpeg格式显示在本地LCD屏上,由于我们 ...