Accumulo
使用apache Accumulo,用户能够存储和管理一个集群之上的大量的数据集
Accumulo使用 Apache Hadoop的HDFS来存储数据,使用Apache ZooKeeper
来做协调。
apache Accumulo是一个有序的,分布式的键值的数据库,提供了具有可伸缩性
健壮性的数据存储与检索功能。
它的主要特证
服务器端的编程,基于细胞的存储控制
对可伸缩性的设计,稳定性。
快速开始
这个快速开始提供了一个基本的安装与运行 Accumulo的指令。对于更细节的指令,需要
查阅深度安装指南。
考虑使用自动化的工具
如果你为了测试或者是开发而安装Accumulo,考虑使用如下的工具:
uno 把Accumulo安装在一个开发的机器上。
Muchos把Accumulo安装在一个集群上(例如亚马逊的EC2或者是微软的Azure VM)
如果你为一个生产环境而安装Accumulo,遵循如下的快速安装指令。
安装 Accumulo
或者下载,或者从Accumulo的源代码构建它的二进制的程序,解压缩如下:
tar xzf /path/to/accumulo-2.0.0-bin.tar.gz
cd accumulo-2.0.0
为了管理Accumulo,在它的bin目录下有如下的四个脚本:
1 Accumulo 运行Accumulo的命令行工具和启动Accumulo的进程
2 Accumulo-service 运行Accumulo进程作为服务。
3 Accumulo-cluster 管理在一个结点或者是多个结点上的Accumulo的集群
4 Accumulo-util 构建原生库,运行jars等的Accumulo工具集
为了配置和运行Accumulo,在接下来的指令中这些脚本被使用。为了便利,
考虑把 accumulo-2.0.0/bin 添加到你的shell路径中。
配置Accumulo
在配置Accumulo之前,Accumulo要求运行被安装的zookeeper和HDFS实例。
重要提示:如果使用的是EC,如果没有合理配置Accumulo,数据可能会丢失。
Accumulo的主要的配置文件是Accumulo.properties,Accumulo-env.sh 和
Accumulo-client.properties,它们都在conf/目录中。
Accumulo.properties 文件配置Accumulo服务器进程(例如表格服务器,主服务器,监控器等)按照如下的步骤设置它:
1. 运行 Accumulo-util build-native 来构建原生的结点。如果这个命令失败,
通过设置tserver.memory.maps.native.enabled 为否,来禁用原生的映射。
2 设置 Instance.volumes 到HDFS的Accumulo的存储数据的路径。如果你的
结点正运行在192.168.1.9:8020,你要存储数据在HDFS的/Accumulo,就
设置instance.volumes的值是 hdfs://192.168.1.9:8020/Accumulo
3 设置 instance.zookeeper.host的值为你的zookeeper的位置。
4 (可选项)修改instance.secret (它被用来在Accumulo的进程之间通信)
的默认值。这个值应该能够匹配所有的服务器。
Accumulo-env.sh文件设置的是Accumulo需要的环境变量。
1 设置HADOOP_HOME 和ZOOKEEPER_HOME的值为Hadoop和Zookeeper的安装目录。Accumulo将使用这些安装目录来找到Hadoop和Zookeeper的JAR软件包,并且
把它们加载到你的CLASSPATH变量中。如果你正在运行Hadoop和Zookeeper的专用的
发布版,你可能需要修改Accumulo-env.sh中的CLASSPATH变量。如果Accumulo
在启动时,有加载相关类的问题,运行Accumulo_classpath,来打印出Accumulo的类路径。
2 Accumulo的表格被配置为默认使用1GB内存(768MB被分配给JVM,256MB被分配给原生的映射),
原生的映射被分配的内存等于tserver JVM堆的大小的三分之一。如果你在Accumulo-env.sh的JAVA_OPTS
部分修改了tserver的内存大小,使用如下的大小的值。
Native? 512MB 1GB 2GB 3GB
Yes -Xmx384m -Xms384m -Xmx768m -Xms768m -Xmx1536m -Xms1536m -Xmx2g -Xms2g
No -Xmx512m -Xms512m -Xmx1g -Xms1g -Xmx2g -Xms2g -Xmx3g -Xms3g
3 (可选项)检查在Accumulo-env.sh的JaVA_OPTS的部分中,Accumulo的主服务器,垃圾回收器和
监视器的内存大小的设置。
在Accumulo的命令行中使用Accumulo-client.properties文件,可以把参数传递到Accumulo的客户端,
来简化对Accumulo的连接。使用如下的步骤配置它。
1 设置instance.name和instance.zookeepers,来表明Accumulo的实例名,和你的实例的zookeeper的连接字符串。
2 选择一个授权类型,并且相应地设置auth.type. 最常用的类型是密码。它要求auth.principal被设置,auth.token
被设置为auth.principal的密码。对于Accumulo的命令行,auth.token被忽略,命令行将提示你输入登录auth.principal的密码。
初始化
Accumulo需要对zookeeper和HDFS的存储数据的位置进行初始化。如下的命令执行这个任务。
Accumulo init
初始化的命令将提示如下的信息:
实例名 这是Accumulo的实例名,它的Accumulo客户端需要知道这个实例名来连接它。
根密码 初始化将安装一个初始化的Accumulo的根用户,提示它的密码。这个信息在稍后的连接中是需要的。
运行Accumulo
为了运行Accumulo,这里有一些方法:
1 使用Accumulo命令,在前台运行Accumulo进程,并且没有重定向标准错误和
标准输出的管道。对于创建init.d这个脚本来运行Accumulo是有用的。
2 使用Accumulo-service命令,把Accumulo的进程运行为服务,或者使用Accumulo
命令作为后台进程,并且重定向标准错误和标准输出的管道,并且管理Pid文件,如果你
正在使用一个集群管理工具,这是很有用的。(例如 集群配置工具等)
3 使用Accumulo-cluster命令,在一个或者是多个结点上运行Accumulo。对于本地部署和测试是有用的。
或者是你没有在生产环境中使用一个集群管理工具时。
上面的每一种方法都有如下的指令:
运行 Accumulo进程
Accumulo tserver
运行Accumulo服务
Accumulo-service tserver start
运行Accumulo集群
Accumulo-cluster create-config
多结点的配置
如果你正在多结点上运行一个Accumulo的集群,在配置目录中,如下的文件中要配置
多个结点:
master:Accumulo的主协调进程,必须指定一个结点,能够指定多个结点,为了容错。
gc: Accumulo的垃圾回收进程,必须指定一个结点,能够指定多个结点,为了容错。
monitor:Accumulo监控器所在的结点,要指定。
tservers Accumulo的工作者进程。列出所有的工作者进程所在的结点
tracers 可选的能力。能指定0或者是多个结点。
Accumulo和zookeeper和HDFS的位置必须在每一个结点上有相同的位置。配置文件必须被复制到每一个结点上。
复制软件和配置的可用的工具有pdcp和prsync.
启动集群
Accumulo-cluster start
首先的步骤
Accumulo shell -u root
停止Accumulo
Accumulo-service tserver stop
Accumulo stop