如何在Ubuntu 14.04上安装具备大数据友好特性的Apache Accumulo NoSQL数据库

如何在Ubuntu 14.04上安装具备大数据友好特性的Apache Accumulo NoSQL数据库

提供:ZStack社区

内容简介

Apache Accumulo is an open-source distributed NoSQL database based on Google’s 是一款开源分布式NoSQL数据库,基于谷歌的BigTable构建而成。其能够非常高效地对超大规模数据集(通常即指大数据)执行CRUD(即创建、读取、更新与删除)操作。相较于其它类似的分布式数据库选项(例如HBase或者CouchDB),Accumulo的优势在于能够立足单元级访问控制层面提供细粒度安全性控制。

Accumulo构建于其它Apache软件的基础之上。Accumulo以键-值对形式表现其数据,并将这些数据作为文件存储在HDFS(Apache的Hadoop分布式文件系统)之上。其同时利用Apache ZooKeeper对不同进程之间的设置进行同步。

在今天的教程当中,我们将学习如何:

  • 安装并sglfApache HDFS与ZooKeeper:这两套系统在Accumulo启动之前必须已经处于活动状态
  • 安装并配置一个单独Accumulo实例

先决条件

大家需要满足以下条件:

第一步——安装并配置JDK 7

Accumulo、HDFS与ZooKeeper都由Java编写而成并需要配合JVM(Java虚拟机)方可运行。因此,让我们首先安装JDK。

更新软件包列表索引。

sudo apt-get update

利用apt-get安装OpenJDK 7。

sudo apt-get install openjdk-7-jdk

使用nano编辑我们的shell环境文件,.bashrc。

nano ~/.bashrc

在文件末尾将JAVA_HOME添加为一条环境变量。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

注意:JAVA_HOME的值可能由于您服务器的具体架构而有所差别。举例来说,在64位服务器当中,该值为/usr/lib/jvm/java-7-openjdk-amd64。大家可以通过罗列/usr/lib/jvm/ directory目录内容以查看确切路径。如果大家的路径与我们示例中所使用的不同,请确保变更对应部分以顺利完成本教程。

保存文件并退出nano。通过以下命令更新当前会话中的环境变量:

. ~/.bashrc

利用nano编辑JVM的java.security配置文件。

sudo nano $JAVA_HOME/jre/lib/security/java.security

搜索securerandom.source参数并变更其内容,如下所示:

securerandom.source=file:/dev/./urandom

保存文件并退出nano。保存文件并退出nano。此处变更用于缩短JVM的启动时间。如果不做变更,则其在大多数虚拟服务器上都将造成相当长的启动时间。

第二步——安装SSH

Hadoop需要SSH与Rsync以管理其守护进程。利用以下命令进行安装:

sudo apt-get install ssh rsync

第三步——启用无密码SSH连接

Hadoop应当通过SSH与我们的服务器相对接,且无需输入任何密码。

利用ssh-keygen生成一条RSA密钥。

ssh-keygen -P ''

在需要输入密码内容时直接按下回车键以选择默认值。而后将这条密钥添加至authorized_keys文件当中。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

其中localhost与0.0.0.0两项值需要被添加至已知主机列表当中。最简单的实现方法就是运行ssh命令。

让我们首先添加localhost。

ssh localhost

这时大家应该会看到如下提示信息:

The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42.
Are you sure you want to continue connecting (yes/no)?

输入yes并按下回车键。

登录完成之后,输入以下命令以退出该子SSH会话:

exit

现在添加0.0.0.0。

ssh 0.0.0.0

提交完成后输入yes并按回车键。

再次输入以下命令以退出子SSH会话:

exit

至此SSH的设置彻底完成。

第四步——创建一个Downloads目录

在本教程当中,大家需要下载几个必要文件。尽管并非必要,但我们还是应该尽量将下载文件保存在独立的目录当中。

mkdir -p ~/Downloads

进入该目录。

cd ~/Downloads

第五步——下载Apache Hadoop

在撰写本教程时,Hadoop的最新稳定版本为2.6.0。利用wget进行下载。

wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz"

第六步——下载Apache ZooKeeper

ZooKeeper的最新稳定版本为3.4.6。利用wget进行下载。

wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz"

第七步——下载Apache Accumulo

Accumulo的最新稳定版本为1.6.1,利用wget进行下载。

wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz"

第八步——创建一个Installs目录

下面创建一个安装目录以存储全部与Accumulo相关的安装文件。

mkdir -p ~/Installs

进入该目录。

cd ~/Installs

第九步——安装并配置Hadoop

使用tar命令以提取hadoop-2.6.0-src.tar.gz文件中的内容。

tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz

注意:如果大家安装的软件版本与本示例中不同,请在文件名中使用正确的版本号。

利用nano打开hadoop-env.sh文件。

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

寻找以export JAVA_HOME开头的一行并将其变更为:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

确保该值等同于我们在.bashrc当中设置的值。

在默认情况下,Hadoop会生成大量调试日志。要阻止其相关操作,我们需要找到以export HADOOP_OPTS开头的行并将其变更为:

export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"

保存并退出。

使用nano打开core-site.xml文件。

nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml

添加一个名为fs.defaultFS的<property> block,其值应当指向该命名节点的主机名与端口(在我们的示例中,分别为localhost与默认端口9000).忽略其注释内容,按照以下内容进行文件编辑:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;?xml-stylesheet type="text/xsl" href="configuration.xsl"?&gt;
&lt;configuration&gt;
&lt;property&gt;
    &lt;name&gt;fs.defaultFS&lt;/name&gt;
    &lt;value&gt;hdfs://localhost:9000&lt;/value&gt;
&lt;/property&gt;
&lt;/configuration&gt;

保存并退出。

使用nano打开hdfs-site.xml文件。

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

我们需要将以下属性添加到该文件当中:

  • dfs.replication: 此数字代表某一block被Hadoop执行复制操作的次数。默认情况下,Hadoop会为每个block创建3个副本。在本教程中,我们取值为1,因为这里并不需要创建集群。

  • dfs.name.dir: 其指向文件系统当中的某个位置,命名节点将在这里存储其名称表。大家需要对其进行变更,因为Hadoop会默认使用/tmp。在这里我们使用hdfs_storage/name。

  • dfs.data.dir: 其指向文件系统中的某个位置,数据节点将在这里存储其block。大家需要对其进行变更,因为Hadoop会默认使用/tmp。在这里我们使用hdfs_storage/data。

忽略注释内容,在添加这些属性之后,文件内容将如下所示:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;?xml-stylesheet type="text/xsl" href="configuration.xsl"?&gt;
&lt;configuration&gt;
&lt;property&gt;
    &lt;name&gt;dfs.replication&lt;/name&gt;
    &lt;value&gt;1&lt;/value&gt;
&lt;/property&gt;
&lt;property&gt;
    &lt;name&gt;dfs.name.dir&lt;/name&gt;
    &lt;value&gt;hdfs_storage/name&lt;/value&gt;
&lt;/property&gt;
&lt;property&gt;
    &lt;name&gt;dfs.data.dir&lt;/name&gt;
    &lt;value&gt;hdfs_storage/data&lt;/value&gt;
&lt;/property&gt;
&lt;/configuration&gt;

使用nano创建一个名为mapred-site.xml的新文件。

nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml

为此文件添加一条名为mapred.job.tracker的属性。该属性中包含MapReduce任务追踪器运行所需要的主机名称与端口编号。在本示例中,二者分别为localhost与默认端口9001。

将以下内容添加至该文件中:

&lt;?xml version="1.0"?&gt;
&lt;?xml-stylesheet type="text/xsl" href="configuration.xsl"?&gt;
&lt;configuration&gt;
 &lt;property&gt;
     &lt;name&gt;mapred.job.tracker&lt;/name&gt;
     &lt;value&gt;localhost:9001&lt;/value&gt;
 &lt;/property&gt;
&lt;/configuration&gt;

进入Haddop的根目录(这一点非常重要,因为Haddop会将hdfs_storage目录创建在当前目录中)。

cd ~/Installs/hadoop-2.6.0/

接下来我们输入以下命令以初始化该命名节点:

~/Installs/hadoop-2.6.0/bin/hdfs namenode -format

这时大家应该可以看到大量输出结果。

接下来,输入以下命令以启动该命名节点:

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

等待一两分钟该节点即可启动完成。而后我们可以利用浏览器访问http://<your-ip>:50070/,这时浏览器将显示该命名节点的Web界面。

故障排查

如果大家无法访问该Web节点,则可利用以下命令检查该命名节点是否处于活动状态:

jps

这时输出结果应该包含以下三项进程外加Jps进程:

  • DataNode
  • NameNode
  • SecondaryNameNode

If you see that

如果我们在输出结果中没有看到命名节点(NameNode)一项,则需执行以下步骤。如果大家没有在block当中执行,则可能需要分别运行一遍。以下命令包含有注释部分:

cd ~/Installs/hadoop-2.6.0/
~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # 停止Hadoop各节点
rm -rf hdfs_storage # 删除命名节点数据
rm -rf /tmp/hadoop-* # 删除各临时目录
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # 对该命名节点进行重新格式化

使用start-dfs.sh进行Hadoop重启:

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

现在大家应该能够正确查看到其Web界面了。

第十步——安装并配置ZooKeeper

进入Installs目录。

cd ~/Installs

使用tar以提取zookeeper-3.4.6.tar.gz文件内容。

tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz

将示例文件zoo_sample.cfg复制到zoo.cfg当中。

cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg

ZooKeeper配置工作已经结束。通过以下命令启动ZooKeeper:

~/Installs/zookeeper-3.4.6/bin/zkServer.sh start

这时大家应该看到以下输出结果:

JMX enabled by default
Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

第十一步——安装并配置Accumulo

现在必要条件已经准备就绪,接下来需要安装Accumulo本体了。

进入Installs目录。

cd ~/Installs

使用tar提取accumulo-1.6.1-bin.tar.gz文件:

tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz

Accumulo为服务器提供多种示例配置方案,其内存容量设置分别为512 MB、1 GB、2 GB与3 GB。在这里我们使用512 MB内存配置。如果大家的服务器资源比较充裕,也可以选择其它配置方案。

将512 MB配置文件复制到conf目录当中。

cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/

再次使用nano编辑.bashrc文件以调整我们的shell环境。

nano ~/.bashrc

将以下环境变更添加到该文件当中:

  • HADOOP_HOME: Haddop安装路径
  • ZOOKEEPER_HOME: ZooKeeper安装路径

将以下命令行添加至文件当中:

export HADOOP_HOME=~/Installs/hadoop-2.6.0/
export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/

保存并退出。

更新该环境,使得添加至.bashrc文件中的各变更应用于当前会话。

. ~/.bashrc

使用nano编辑accumulo-env.sh文件。

nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh

在默认情况下,Accumulo的HTTP监视器只绑定至本地网络接口。为了能够通过互联网进行访问,我们需要将ACCUMULO_MONITOR_BIND_ALL的值设置为true。

找到以export ACCUMULO_MONITOR_BIND_ALL开头一行并取消其注释。具体内容如下所示:

export ACCUMULO_MONITOR_BIND_ALL="true"

保存并退出。

使用nano编辑accumulo-site.xml文件。

nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml

Accumulo的各工作程序进程利用一条密钥进行相互通信。我们需要将其替换为一条安全字符串。搜索instance.secret属性并变更其值。在这里我将使用PASS1234字符串。该属性的XML应如下所示:

&lt;property&gt;
&lt;name&gt;instance.secret&lt;/name&gt;
&lt;value&gt;PASS1234&lt;/value&gt;
&lt;description&gt;A secret unique to a given instance that all servers must know in order to communicate with one another.
  Change it before initialization. To
  change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd],
  and then update this file.
&lt;/description&gt;
&lt;/property&gt;

接下来,添加一条名为instance.volumes的新属性。该属性的值指向Accumulo在HDFS存储数据的具体位置。我们这里将数据保存在/accumulo目录当中。

&lt;property&gt;
&lt;name&gt;instance.volumes&lt;/name&gt;
&lt;value&gt;hdfs://localhost:9000/accumulo&lt;/value&gt;
&lt;/property&gt;

找到trace.token.property.password属性,为其设定一条安全值。请注意,我们在下一步中仍要使用该值。在这里我将其设定为mypassw。

&lt;property&gt;
&lt;name&gt;trace.token.property.password&lt;/name&gt;
&lt;value&gt;mypassw&lt;/value&gt;
&lt;/property&gt;

保存并退出。

初始化Accumulo。

~/Installs/accumulo-1.6.1/bin/accumulo init

大家需要提交并确认一条Instance名称。这里使用任意名称皆可,我选择的是DIGITAL_OCEAN。

下一步是提供一条密码。输入我们此前为trace.token.property.password属性设定的密码内容即可。

命令执行完毕后,大家就可以启动Accumulo了。

~/Installs/accumulo-1.6.1/bin/start-all.sh

大家可能会看到几条与当前系统参数相关的提醒,建议我们将各项数值调高一些。由于我们在这里只需要创建一个小型实例,因此直接忽略即可。

重启完成后,大家即可以通过http://<your-server-ip>:50095在浏览器中访问Accumulo的Web界面了。

总结

在今天的教程中,我们了解了如何设置Apache Accumulo及其运行所必需的其它组件。我们还利用HDFS以伪分布模式创建出一套能够运行在单一小型服务器上的简单实例。当然,出于性能优化的考虑,大家应该在生产场景下确保HDFS以完全分布式模式运行。

在生产场景下,这里还强烈建议大家将各进程部署在至少拥有8 GB内存且处理器计算核心数量不少于4个的服务器之上,这意味着每个进程能够拥有2 GB内存与1个独立计算核心。另外,大家也可以将各个组件分别部署在不同的服务器上。

欲了解更多相关信息,可参考Apache Accumulo的用户手册.

本文来源自DigitalOcean Community。英文原文:How To Install the Big-Data Friendly Apache Accumulo NoSQL Database on Ubuntu 14.04

翻译:diradw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值