前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装对大数据友好的Apache Accumulo NoSQL数据库

如何在Ubuntu 14.04上安装对大数据友好的Apache Accumulo NoSQL数据库

原创
作者头像
你在哪里
修改2018-10-12 17:41:54
1.5K0
修改2018-10-12 17:41:54
举报
文章被收录于专栏:云计算教程系列

介绍

Apache Accumulo是一个基于Google BigTable的开源分布式NoSQL数据库。它用于在极大数据集(通常称为大数据)上有效执行CRUD(创建读取更新删除)操作。如果项目需要细胞级访问控制形式的细粒度安全性,则Accumulo优于其他类似的分布式数据库(例如HBase或CouchDB)。

Accumulo建立在其他Apache软件之上。Accumulo以键值对的形式表示其数据,并将该数据存储在HDFS(Apache的Hadoop分布式文件系统)上。它还使用Apache ZooKeeper在其所有进程之间同步设置。

在本教程中,您将学习如何:

  • 安装和配置Apache HDFS和ZooKeeper:在启动Accumulo之前,这些系统必须处于活动状态
  • 安装并配置Accumulo的独立实例

准备

您将需要以下内容:

  • Ubuntu 14.04服务器(最好是32位)
  • 一个具有sudo权限的用户
  • 至少2 GB的交换空间

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

步骤1 - 安装和配置JDK 7

Accumulo,HDFS和ZooKeeper都是用Java编写的,需要运行JVM(Java虚拟机)。那么,让我们从安装JDK开始吧。

更新包列表索引。

代码语言:javascript
复制
sudo apt-get update

使用apt-get安装OpenJDK 7 。

代码语言:javascript
复制
sudo apt-get install openjdk-7-jdk

使用nano编辑您的shell环境文件.bashrc

代码语言:javascript
复制
nano ~/.bashrc

在文件末尾添加环境变量JAVA_HOME

代码语言:javascript
复制
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

注意:根据服务器的体系结构,JAVA_HOME值可能会有所不同。例如,在64位服务器上,值为/usr/lib/jvm/java-7-openjdk-amd64。您可以通过列出/usr/lib/jvm/目录的内容来查看确切的路径。如果您的路径与此处显示的路径不同,请确保在此处和其他地方进行适当的更改。

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

代码语言:javascript
复制
. ~/.bashrc

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

代码语言:javascript
复制
sudo nano $JAVA_HOME/jre/lib/security/java.security

搜索参数securerandom.source并更改行,使其如下所示:

代码语言:javascript
复制
securerandom.source=file:/dev/./urandom

保存文件并退出nano。此更改对于减少JVM的启动时间是必要的。不进行此更改可能会导致大多数虚拟服务器上的启动时间过长。

第2步 - 安装SSH

Hadoop需要SSH和Rsync来管理其守护进程。使用以下命令安装它们:

代码语言:javascript
复制
sudo apt-get install ssh rsync

步骤3 - 启用无密码SSH连接

Hadoop应该能够通过SSH连接到您的服务器,而不会被提示输入密码。

使用ssh-keygen生成RSA密钥。

代码语言:javascript
复制
ssh-keygen -P ''

出现提示时按ENTER键,选择默认值。

将生成的密钥添加到authorized_keys文件中。

代码语言:javascript
复制
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

localhost值和0.0.0.0应该被添加到已知主机列表中。最简单的方法是运行ssh命令。

我们先添加一下localhost

代码语言:javascript
复制
ssh localhost

您将收到如下消息的提示:

代码语言:javascript
复制
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并按ENTER

登录完成后,键入以下内容退出子SSH会话:

代码语言:javascript
复制
exit

我们现在加0.0.0.0

代码语言:javascript
复制
ssh 0.0.0.0

输入yes并在出现提示时按ENTER``ENTER

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

代码语言:javascript
复制
exit

SSH设置现已完成。

第4步 - 创建下载目录

您将为本教程下载几个文件。虽然不是必需的,但最好将所有下载存储在单独的目录中。

代码语言:javascript
复制
mkdir -p ~/Downloads

输入目录。

代码语言:javascript
复制
cd ~/Downloads

第5步 - 下载Apache Hadoop

使用wget下载Hadoop的最新稳定版本。

代码语言:javascript
复制
wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz"

第6步 - 下载Apache ZooKeeper

使用wget下载ZooKeeper的最新稳定版本。

代码语言:javascript
复制
wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz"

第7步 - 下载Apache Accumulo

最新稳定版的Accumulo是1.6.1。使用下载它wget

代码语言:javascript
复制
wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz"

步骤8 - 创建安装目录

创建一个目录来存储我们所有与Accumulo相关的安装。

代码语言:javascript
复制
mkdir -p ~/Installs

输入目录。

代码语言:javascript
复制
cd ~/Installs

第9步 - 安装和配置Hadoop

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

代码语言:javascript
复制
tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz

注意:如果您安装了此软件的任何其他版本,请在文件名中使用相应的版本。

使用nano打开hadoop-env.sh

代码语言:javascript
复制
nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

查找以export JAVA_HOME开头的行并将其更改为:

代码语言:javascript
复制
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

确保此值与您在.bashrc中设置的值相同。

默认情况下,Hadoop会生成大量调试日志。要停止此行为,请查找以export HADOOP_OPTS开头的行并将其更改为:

代码语言:javascript
复制
export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"

保存并退出。

使用nano打开core-site.xml

代码语言:javascript
复制
nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml

添加一个名为fs.defaultFS的块<property>。它的值应该指向namenode的主机名和端口(在我们的例子中,它是localhost和默认端口9000)。忽略评论,编辑您的文件,使其如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

保存并退出。

使用nano打开hdfs-site.xml

代码语言:javascript
复制
nano ~/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应存储其块的位置。您需要更改此设置,因为Hadoop /tmp默认使用。让我们hdfs_storage/data用来存储数据块。

在添加这些属性后忽略注释,您的文件应如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>hdfs_storage/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>hdfs_storage/data</value>
    </property>
</configuration>

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

代码语言:javascript
复制
nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml

添加名为mapred.job.tracker的属性到此文件。此属性包含运行MapReduce作业跟踪程序的主机名和端口号。对于我们的设置,使用localhost和默认端口9001

将以下内容添加到文件中:

代码语言:javascript
复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>

输入Hadoop的基目录(这很重要,因为Hadoop在当前目录中创建了目录 hdfs_storage)。

代码语言:javascript
复制
cd ~/Installs/hadoop-2.6.0/

现在可以通过键入以下内容来初始化NameNode:

代码语言:javascript
复制
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format

你应该看到相当多的输出。

接下来,输入以下命令启动NameNode:

代码语言:javascript
复制
~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

等一两分钟才能开始。启动后,您可以使用浏览器访问http://<your-ip>:50070/和浏览NameNode的Web界面。

故障排除

如果您无法访问Web界面,请使用以下命令检查NameNode是否处于活动状态:

代码语言:javascript
复制
jps

您的输出应包含以下三个过程以及Jps过程:

  • DataNode
  • NameNode
  • SecondaryNameNode

如果您看到输出中不存在NameNode,请执行以下步骤。如果它们不在块中执行,则可能必须单独运行它们。评论包含在内。

代码语言:javascript
复制
cd ~/Installs/hadoop-2.6.0/
~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes
rm -rf hdfs_storage # Delete the namenode data
rm -rf /tmp/hadoop-* # Delete the temporary directories
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode

使用start-dfs.sh命令重启Hadoop :

代码语言:javascript
复制
~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

您现在应该可以访问Web界面了。

步骤10 - 安装和配置ZooKeeper

输入Installs目录。

代码语言:javascript
复制
cd ~/Installs

使用tar提取zookeeper-3.4.6.tar.gz

代码语言:javascript
复制
tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz

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

代码语言:javascript
复制
cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg

ZooKeeper的配置现已完成。输入以下命令启动ZooKeeper:

代码语言:javascript
复制
~/Installs/zookeeper-3.4.6/bin/zkServer.sh start

您应该看到如下所示的输出:

代码语言:javascript
复制
JMX enabled by default
Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

步骤11 - 安装和配置Accumulo

现在它的所有依赖项都得到了满足,现在是时候开始安装Accumulo本身了。

输入Installs目录。

代码语言:javascript
复制
cd ~/Installs

使用tar提取accumulo-1.6.1-bin.tar.gz

代码语言:javascript
复制
tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz

Accumulo为各种内存大小的服务器提供了示例配置:512 MB,1 GB,2 GB和3 GB。我将在本教程中使用512 MB的配置。如果服务器有更多内存,您可以选择其他配置。

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

代码语言:javascript
复制
cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/

使用.bashrc文件用nano再次编辑shell环境。

代码语言:javascript
复制
nano ~/.bashrc

将以下环境变量添加到此文件:

  • HADOOP_HOME:Hadoop安装的路径
  • ZOOKEEPER_HOME:ZooKeeper安装的路径

将以下行添加到您的文件中:

代码语言:javascript
复制
export HADOOP_HOME=~/Installs/hadoop-2.6.0/
export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/

保存并退出。

更新环境,以便您添加到.bashrc的变量在当前会话中可用。

代码语言:javascript
复制
. ~/.bashrc

使用nano编辑accumulo-env.sh

代码语言:javascript
复制
nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh

默认情况下,Accumulo的HTTP监视器仅绑定到本地网络接口。要能够通过Internet访问它,您必须将值ACCUMULO_MONITOR_BIND_ALL设置为true

找到以export ACCUMULO_MONITOR_BIND_ALL开头的行并取消注释。它应该如下所示:

代码语言:javascript
复制
export ACCUMULO_MONITOR_BIND_ALL="true"

保存并退出。

使用nano编辑accumulo-site.xml

代码语言:javascript
复制
nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml

Accumulo的工作进程使用密钥相互通信。这应该更改为一个安全的字符串。搜索属性instance.secret并更改其值。我打算用这个字符串:PASS1234。属性的XML应如下所示:

代码语言:javascript
复制
<property>
    <name>instance.secret</name>
    <value>PASS1234</value>
    <description>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.
    </description>
</property>

接下来,添加一个名为instance.volumes的新属性。此属性的值指定Accumulo应将其数据存储在HDFS中的位置。让我们将数据存储在/accumulo目录中。

代码语言:javascript
复制
<property>
    <name>instance.volumes</name>
    <value>hdfs://localhost:9000/accumulo</value>
</property>

找到属性trace.token.property.password,并将其值设置为安全的东西。请记住此值,因为您将在下一步中使用它。我要把它设置为mypassw

代码语言:javascript
复制
  <property>
    <name>trace.token.property.password</name>
    <value>mypassw</value>
  </property>

保存并退出。

初始化Accumulo。

代码语言:javascript
复制
~/Installs/accumulo-1.6.1/bin/accumulo init

系统将提示您输入实例名称。使用您选择的任何名称。我选择DIGITAL_OCEAN

接下来,系统将提示您输入密码。输入您用于trace.token.property.password属性的相同密码。

命令完成后,您可以启动Accumulo。

代码语言:javascript
复制
~/Installs/accumulo-1.6.1/bin/start-all.sh

您可能会看到一些警告,建议某些系统参数的值更高。由于我们在本教程中创建了一个非常小的实例,因此您可以忽略这些警告。

启动完成后,您可以使用浏览器访问http://<your-server-ip>:50095的Accumulo的Web界面。

结论

在本教程中,您学习了如何设置Apache Accumulo及其依赖的所有其他组件。我们今天在伪分布式模式下使用HDFS创建了一个非常简单的设置,可以在单个小型服务器上运行。为了在生产方案中获得最佳性能,HDFS应该以完全分布式模式运行。

在生产方案中,还强烈建议将这些进程部署在具有至少8GB RAM和4个或更多处理器核心的服务器上,以便每个进程可以使用超过2GB的内存和单独的核心。或者,您可以在不同的服务器上单独部署组件。

想要了解更多关于安装对大数据友好的Apache Accumulo NoSQL数据库的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install the Big-Data Friendly Apache Accumulo NoSQL Database on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 步骤1 - 安装和配置JDK 7
  • 第2步 - 安装SSH
  • 步骤3 - 启用无密码SSH连接
  • 第4步 - 创建下载目录
  • 第5步 - 下载Apache Hadoop
  • 第6步 - 下载Apache ZooKeeper
  • 第7步 - 下载Apache Accumulo
  • 步骤8 - 创建安装目录
  • 第9步 - 安装和配置Hadoop
  • 步骤10 - 安装和配置ZooKeeper
  • 步骤11 - 安装和配置Accumulo
    • 结论
    相关产品与服务
    云服务器
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档