前言

在我刚开始接触分布式集群的时候,是自己在几台虚拟机中手动安装的 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 修改如下:

$ACCUMULO_HOME/lib/accumulo-server.jar,
$ACCUMULO_HOME/lib/accumulo-core.jar,
$ACCUMULO_HOME/lib/accumulo-start.jar,
$ACCUMULO_HOME/lib/accumulo-fate.jar,
$ACCUMULO_HOME/lib/accumulo-proxy.jar,
$ACCUMULO_HOME/lib/[^.].*.jar,
$ZOOKEEPER_HOME/zookeeper[^.].*.jar,
$HADOOP_CONF_DIR,
$HADOOP_PREFIX/share/hadoop/common/[^.].*.jar,
$HADOOP_PREFIX/jars/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/common/lib/(?!slf4j)[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/hdfs/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/mapreduce/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/yarn/[^.].*.jar,
$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. EntityFramework Core 2.0全局过滤(HasQueryFilter)

    前言 EntityFramework Core每一次版本的迭代和更新都会带给我们惊喜,每次都会尽量满足大部分使用者的需求.在EF Core 2.0版本中出现了全局过滤新特性即HasQueryFilte ...

  2. HttpURLConnection发送请求

    每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络.请求后在 HttpURLConnection 的 InputStrea ...

  3. python基础 数据类型 判断语句

    python 类unix系统默认已经安装或使用源码包./confighuremakemake install python运行方法 通过交互式解释器 [root@room1pc01 ~]# pytho ...

  4. java I/O框架 (二)文件操作(File)

    1.介绍 java io中最常操作的就是我们电脑中的文件,将这些文件以流的形式本地读写,或者上传到网络上.java中的File类就是对这些存储于磁盘上文件的虚拟映射,这也体现了java面向对象的思想, ...

  5. redis客户端连接服务端the version of redis server is too low to support this function错误

    redis作为一个内存数据库,使用得当可以大大的提升系统运行的效率,据说能读的速度是110000次/s,写的速度是81000次/s,我们的其中一个系统就用到了这个. 由于之前负责这个的同事离职,只好临 ...

  6. 顺便说说webservice

    webservice这玩意框架也挺多的.就这玩意我知道cxf,axis2,jersey.通过jdk也能产生webservie.感觉这东西太多,有时间知道点就写点吧.先挖坑在此

  7. arm_linux_device_mem内存映射

    /dev/mem: 物理内存的全镜像.可以用来访问物理内存. /dev/kmem: kernel看到的虚拟内存的全镜像.可以用来访问kernel的内容. /dev/mem 用来访问物理IO设备比如X ...

  8. DriverStudio开发PCI设备DMA数据传输

    DriverWizard向导可以创建基本的wDM驱动程序框架,包括总线类型,地址空间,中断源,DMA资源,以及IOCTL(i/o控制代码)的定义等等.详细情况可参看DriverStudio的帮助文档, ...

  9. MTBF

    MTBF,即平均故障间隔时间,英文全称是"Mean Time Between Failure".是衡量一个产品(尤其是电器产品)的可靠性指标.单位为"小时".它 ...

  10. Caused by: java.sql.SQLException: Incorrect integer value: '' for column 'clientId' at row 41

    1.错误描述 [ERROR:]2015-06-10 13:48:26,253 [异常拦截] oa.exception.ExceptionHandler org.hibernate.exception. ...