介绍
Apache Accumulo 是一个基于 Google 的 BigTable的开源分布式 NoSQL 数据库,用于在极大数据集(通常称为大数据)上有效地执行 CRUD (Create Read Update Delete) 操作。
Accumulo 是建立在其他 Apache 软件之上。Accumulo 代表其数据以关键值对的形式,并将这些数据存储在 HDFS (Apache 的 Hadoop 分布式文件系统) 文件中。
在本教程中,您将学习如何:
- 安装和配置 Apache HDFS 和 ZooKeeper:在启动 Accumulo 之前,这些系统必须激活
- 安装和配置 Accumulo 独立实例
前提条件
您将需要以下内容:
步骤 1 — 安装和配置 JDK 7
Accumulo、HDFS 和 ZooKeeper 都是用 Java 编写的,需要运行 JVM(Java 虚拟机)。
更新包列表索引。
1sudo apt-get update
使用apt-get
安装 OpenJDK 7。
1sudo apt-get install openjdk-7-jdk
使用nano
来编辑您的壳环境文件,即.bashrc
。
1nano ~/.bashrc
添加JAVA_HOME
作为文件末尾的环境变量。
1export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
注:JAVA_HOME 的值可能因服务器的架构而有所不同,例如,在 64 位服务器上,值将是 /usr/lib/jvm/java-7-openjdk-amd64
. 您可以通过列出 /usr/lib/jvm/
目录的内容来查看准确的路径。
保存文件并输出nano
。通过键入更新当前会话的环境变量:
1. ~/.bashrc
使用nano
编辑JVM的java.security
配置文件。
1sudo nano $JAVA_HOME/jre/lib/security/java.security
搜索参数 securerandom.source
并更改行以使其看起来如下:
1securerandom.source=file:/dev/./urandom
保存文件并输出nano
。这个更改是必要的,以减少JVM的启动时间。
第2步:安装SSH
Hadoop 需要 SSH 和 Rsync 来管理其 Daemons. 使用以下命令来安装它们:
1sudo apt-get install ssh rsync
步骤 3:启用无密码的 SSH 连接
Hadoop 应该能够通过 SSH 连接到您的服务器,而不需要密码。
使用「ssh-keygen」生成 RSA 密钥。
1ssh-keygen -P ''
提示时按 ** ENTER** 以选择默认值。
将生成的密钥添加到autorized_keys
文件中。
1cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
值「localhost」和「0.0.0.0」应添加到已知主机列表中,最简单的方法是运行命令「ssh」。
让我们先加入本地
吧。
1ssh localhost
您将收到一个看起来像这样的消息:
1The authenticity of host 'localhost (127.0.0.1)' can't be established.
2ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42.
3Are you sure you want to continue connecting (yes/no)?
输入是
并按进入
。
一旦登录完成,请通过键入以下方式退出子女SSH会话:
1exit
现在我们再加上‘0.0.0.0’。
1ssh 0.0.0.0
输入是
并在提示时按ENTER
。
再次,通过键入退出孩子的 SSH 会话:
1exit
SSH 设置已完成。
第4步:创建下载目录
您将下载几个文件为本教程. 虽然不是真正必要的,这是一个好主意,以存储所有的下载在一个单独的目录。
1mkdir -p ~/Downloads
进入目录。
1cd ~/Downloads
第5步:下载Apache Hadoop
在写作时,Hadoop的最新稳定版本是 2.6.0 . 使用wget
下载。
1wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz"
第6步:下载Apache ZooKeeper
ZooKeeper 的最新稳定版本是 3.4.6 . 使用 wget 下载。
1wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz"
第7步:下载Apache Accumulo
Accumulo的最新稳定版本是 1.6.1 . 使用wget
下载。
1wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz"
步骤 8 – 创建一个安装目录
创建一个目录来存储我们所有与 Accumulo 相关的安装。
1mkdir -p ~/Installs
进入目录。
1cd ~/Installs
第9步:安装和配置Hadoop
使用tar
命令提取hadoop-2.6.0-src.tar.gz
的内容。
1tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz
注意: 如果您安装了此软件的其他版本,请在文件名中使用相应的版本。
使用nano
打开hadoop-env.sh
。
1nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
寻找从出口 JAVA_HOME
开始的行,然后将其更改为:
1export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
请确保此值与您在 .bashrc
中设置的值相同。
默认情况下,Hadoop 会生成大量的调试日志. 要停止这种行为,请寻找从出口 HADOOP_OPTS
开始的行,然后将其更改为:
1export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
保存和退出。
使用nano
打开core-site.xml
。
1nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml
添加一个名为fs.defaultFS
的<属性>
块,其值应该指向 namenode 的主机名和端口(在我们的情况下,它是localhost
,默认端口是9000
).忽略了评论,请编辑您的文件,以便它看起来像这样:
1<?xml version="1.0" encoding="UTF-8"?>
2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
3<configuration>
4 <property>
5 <name>fs.defaultFS</name>
6 <value>hdfs://localhost:9000</value>
7 </property>
8</configuration>
保存和退出。
使用nano
打开hdfs-site.xml
。
1nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
以下属性需要添加到此文件:
dfs.replication
: 這個數字指定了 Hadoop 複製區塊的次數。 默認時, Hadoop 為每個區塊創建了3
複製。 在本教程中,使用值1
,因為我們不是在創建群集。dfs.name.dir
: 這指示了檔案系統中的位置,其中 namenode 可以儲存名表。 您需要改變這一點,因為 Hadoop 默認使用/tmp
。 讓我們使用hdfs_storage/name
儲存名表。dfs.data.dir
: 這指示了檔案系統中的位置,而 datanode 應該儲存其區塊。 您需要改變這一點,因為 H
忽略了评论,在添加这些属性后,您的文件应该是这样的:
1<?xml version="1.0" encoding="UTF-8"?>
2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
3<configuration>
4 <property>
5 <name>dfs.replication</name>
6 <value>1</value>
7 </property>
8 <property>
9 <name>dfs.name.dir</name>
10 <value>hdfs_storage/name</value>
11 </property>
12 <property>
13 <name>dfs.data.dir</name>
14 <value>hdfs_storage/data</value>
15 </property>
16</configuration>
使用nano
创建一个名为mapred-site.xml
的新文件。
1nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml
将名为mapred.job.tracker的属性添加到此文件中. 此属性包含运行 MapReduce 工作追踪器的主机名和端口号。
将以下内容添加到文件中:
1<?xml version="1.0"?>
2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
3<configuration>
4 <property>
5 <name>mapred.job.tracker</name>
6 <value>localhost:9001</value>
7 </property>
8</configuration>
输入 Hadoop 的基本目录(这很重要,因为 Hadoop 在当前目录中创建了hdfs_storage
目录)。
1cd ~/Installs/hadoop-2.6.0/
NameNode 现在可以通过键入开始:
1~/Installs/hadoop-2.6.0/bin/hdfs namenode -format
你应该看到一些产量。
接下来,通过键入开始 NameNode:
1~/Installs/hadoop-2.6.0/sbin/start-dfs.sh
一旦启动,您可以使用浏览器访问 http://<your-ip>:50070/
并浏览 NameNode 的 Web 界面。
- 解决问题 *
如果无法访问 Web 接口,请使用以下命令检查 NameNode 是否活跃:
1jps
您的输出应包含以下三个进程以及JPS
进程:
DataNode
NameNode
SecondaryNameNode
如果您看到NameNode
不在输出中,请执行以下步骤. 如果它们在一个块中不执行,您可能需要单独运行它们。
1cd ~/Installs/hadoop-2.6.0/
2~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes
3rm -rf hdfs_storage # Delete the namenode data
4rm -rf /tmp/hadoop-* # Delete the temporary directories
5~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode
使用「start-dfs.sh」重新啟動 Hadoop:
1~/Installs/hadoop-2.6.0/sbin/start-dfs.sh
您现在应该能够访问 Web 界面。
步骤 10 – 安装和配置 ZooKeeper
进入安装
目录。
1cd ~/Installs
使用tar
来提取zookeeper-3.4.6.tar.gz
。
1tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz
复制示例文件 zoo_sample.cfg
到 zoo.cfg
。
1cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg
ZooKeeper 的配置已完成. 通过键入开始 ZooKeeper:
1~/Installs/zookeeper-3.4.6/bin/zkServer.sh start
你应该看到这样的输出:
1JMX enabled by default
2Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg
3Starting zookeeper ... STARTED
步骤 11 – 安装和配置 Accumulo
现在所有的依赖已经满足了,是时候为Accumulo本身的安装工作了。
进入安装
目录。
1cd ~/Installs
提取 accumulo-1.6.1-bin.tar.gz
使用 tar
:
1tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz
Accumulo 提供各种内存大小的服务器的样本配置: 512 MB, 1 GB, 2 GB 和 3 GB. 我将在本教程中使用 512 MB 的配置。
将 512 MB 配置文件复制到conf
目录。
1cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/
使用nano
再次编辑您的壳环境,使用.bashrc
文件。
1nano ~/.bashrc
将以下环境变量添加到此文件中:
- HADOOP_HOME:通往 Hadoop 安装之路
- ZOOKEEPER_HOME:通往 ZooKeeper 安装之路
将以下行添加到您的文件中:
1export HADOOP_HOME=~/Installs/hadoop-2.6.0/
2export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/
保存和退出。
更新环境,以便您添加到 .bashrc
的变量在当前会话中可用。
1. ~/.bashrc
使用「nano」來編輯「accumulo-env.sh」。
1nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh
默认情况下,Accumulo 的 HTTP 显示器仅连接到本地网络接口. 要通过互联网访问它,您必须将 ACCUMULO_MONITOR_BIND_ALL
值设置为 `true'。
查找从export ACCUMULO_MONITOR_BIND_ALL
开始的行,然后放弃评论。
1export ACCUMULO_MONITOR_BIND_ALL="true"
保存和退出。
使用「nano」來編輯「accumulo-site.xml」。
1nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml
Accumulo 的工人流程使用秘密密密钥相互通信. 应该更改为安全的字符串. 搜索属性 instance.secret
并更改其值. 我将使用此字符串: PASS1234
. 属性的 XML 应该是这样的:
1<property>
2 <name>instance.secret</name>
3 <value>PASS1234</value>
4 <description>A secret unique to a given instance that all servers must know in order to communicate with one another.
5 Change it before initialization. To
6 change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd],
7 and then update this file.
8 </description>
9</property>
接下来,添加一个名为instance.volumes
的新属性. 该属性的值指定了 Accumulo 应该在 HDFS 中存储数据的位置. 让我们将数据存储在/accumulo
目录中。
1<property>
2 <name>instance.volumes</name>
3 <value>hdfs://localhost:9000/accumulo</value>
4</property>
查找属性 trace.token.property.password
,并将其值设置为安全的东西. 记住这个值,因为您将在下一步需要它。
1<property>
2 <name>trace.token.property.password</name>
3 <value>mypassw</value>
4 </property>
保存和退出。
开始积累。
1~/Installs/accumulo-1.6.1/bin/accumulo init
您将被要求输入一个 Instance 名称 . 使用您选择的任何名称. 我选择 DIGITAL_OCEAN
。
接下来,您将被要求提供密码. 输入您为属性 trace.token.property.password
使用的相同密码。
一旦命令完成,您可以启动 Accumulo。
1~/Installs/accumulo-1.6.1/bin/start-all.sh
您可能会看到一些警告建议某些系统参数更高的值. 由于我们在本教程中创建了一个非常小的实例,您可以忽略这些警告。
一旦启动完成,您可以使用浏览器访问Accumulo的 Web 界面:http://
结论
在本教程中,你已经学会了如何设置Apache Accumulo和它所依赖的所有其他组件. 我们今天创建了一个非常简单的设置,使用HDFS在假分布式模式下,可以运行在单个小服务器上。
在生产场景中,建议这些流程部署在具有至少8GB的RAM和4个或更多处理器核心的服务器上,以便每个流程可以使用超过2GB的内存和一个单独的核心。
有关更多信息,请参阅 Apache Accumulo 的 用户手册。