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

介绍

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

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

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

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

先决条件

您将需要以下:

第1步 - 安装和配置JDK 7

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

更新包列表索引。

sudo apt-get update

使用安装的OpenJDK 7 apt-get

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/目录下。 如果您的路径与此处显示的不同,请确保在此处和其他位置进行适当的更改。

保存文件并退出nano 通过键入以下内容更新当前会话的环境变量:

. ~/.bashrc

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

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

搜索参数securerandom.source并更改行,以便它看起来像这样:

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

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

第2步 - 安装SSH

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

sudo apt-get install ssh rsync

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

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

生成使用RSA密钥ssh-keygen

ssh-keygen -P ''

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

添加生成的关键authorized_keys文件。

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

localhost0.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 ,然后按ENTER

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

exit

让我们添加0.0.0.0现在。

ssh 0.0.0.0

键入yes ,然后按ENTER提示时。

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

exit

SSH设置现已完成。

第4步 - 创建下载目录

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

mkdir -p ~/Downloads

输入目录。

cd ~/Downloads

第5步 - 下载Apache Hadoop

在写这篇文章的时候,Hadoop的最新稳定版本是2.6.0。 使用下载wget

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

第6步 - 下载Apache ZooKeeper

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

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

第7步 - 下载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"

第8步 - 创建安装目录

创建一个目录以存储所有与Accumulo相关的安​​装。

mkdir -p ~/Installs

输入目录。

cd ~/Installs

第9步 - 安装和配置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"

保存并退出。

使用nanocore-site.xml

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

添加<property>块命名fs.defaultFS 它的值应该指向的NameNode的主机名和端口(在我们的情况下, localhost和默认端口9000 )。 忽略注释,请编辑您的文件,使其看起来像这样:

<?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

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

需要将以下属性添加到此文件:

  • dfs.replication :此数字指定多少次块由Hadoop的复制。 默认情况下,Hadoop的创建3副本的每个块。 在本教程中,使用值1 ,因为我们没有创建一个集群。

  • dfs.name.dir :这指向在文件系统中,其中的名称节点可以存储该名称表中的一个位置。 你需要改变这一点,因为Hadoop的使用/tmp默认情况下。 让我们用hdfs_storage/name存储名称表。

  • dfs.data.dir :这指向在所述数据节点应该存储它的块的文件系统中的位置。 你需要改变这一点,因为Hadoop的使用/tmp默认情况下。 让我们用hdfs_storage/data来存储的数据块。

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

<?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

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

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

将以下内容添加到文件:

<?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在当前目录的目录)。

cd ~/Installs/hadoop-2.6.0/

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

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

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

接下来,通过键入以下命令来启动NameNode:

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

等一两分钟,它开始。 一旦开始,你可以使用浏览器访问http://<your-ip>:50070/和通过的NameNode的Web界面浏览。

Hadoop NameNode Web接口

故障排除

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

jps

输出应该包含与沿着以下三个过程Jps的过程:

  • DataNode
  • NameNode
  • SecondaryNameNode

如果您看到NameNode是不存在的输出,请执行下列步骤。 如果它们不在块中执行,您可能必须单独运行它们。 评论被排除在内。

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

重新启动Hadoop的使用start-dfs.sh

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

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

第10步 - 安装并配置ZooKeeper

输入Installs目录。

cd ~/Installs

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

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

复制示例文件zoo_sample.cfgzoo.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

第1步1 - 安装和配置Accumulo

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

输入Installs目录。

cd ~/Installs

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

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重新编辑你的shell环境,使用.bashrc文件。

nano ~/.bashrc

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

  • HADOOP_HOME:Hadoop安装的路径
  • 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监视器仅绑定到本地网络接口。 为了能够通过Internet来访问它,你要的值设置ACCUMULO_MONITOR_BIND_ALLtrue

查找开头的行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应如下所示:

<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

<property>
    <name>instance.volumes</name>
    <value>hdfs://localhost:9000/accumulo</value>
</property>

找物业trace.token.property.password ,并将其值设置的东西安全。 记住此值,因为您将在下一步中需要它。 我将它设置为mypassw

  <property>
    <name>trace.token.property.password</name>
    <value>mypassw</value>
  </property>

保存并退出。

初始化Accumulo。

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

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

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

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

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

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

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

Accumulo Web界面

结论

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

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

欲了解更多信息,请参阅ApacheAccumulo的用户手册

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏