红联Linux门户
Linux帮助

Ubuntu14.04上安装大数据友好特性Apache Accumulo NoSQL数据库

发布时间:2016-11-10 11:07:14来源:zstack.org.cn作者: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实例
 
先决条件
大家需要满足以下条件:
Ubuntu 14.04服务器(最好为32位版本)
一个sudo用户
至少2 GB剩余存储空间
 
第一步——安装并配置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).忽略其注释内容,按照以下内容进行文件编辑:
<?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: 此数字代表某一block被Hadoop执行复制操作的次数。默认情况下,Hadoop会为每个block创建3个副本。在本教程中,我们取值为1,因为这里并不需要创建集群。
dfs.name.dir: 其指向文件系统当中的某个位置,命名节点将在这里存储其名称表。大家需要对其进行变更,因为Hadoop会默认使用/tmp。在这里我们使用hdfs_storage/name。
dfs.data.dir: 其指向文件系统中的某个位置,数据节点将在这里存储其block。大家需要对其进行变更,因为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>
进入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界面。
Ubuntu14.04上安装大数据友好特性Apache Accumulo NoSQL数据库
故障排查
如果大家无法访问该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应如下所示:
<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
大家需要提交并确认一条Instance名称。这里使用任意名称皆可,我选择的是DIGITAL_OCEAN。
下一步是提供一条密码。输入我们此前为trace.token.property.password属性设定的密码内容即可。
命令执行完毕后,大家就可以启动Accumulo了。
~/Installs/accumulo-1.6.1/bin/start-all.sh
大家可能会看到几条与当前系统参数相关的提醒,建议我们将各项数值调高一些。由于我们在这里只需要创建一个小型实例,因此直接忽略即可。
重启完成后,大家即可以通过http://<your-server-ip>:50095在浏览器中访问Accumulo的Web界面了。
Ubuntu14.04上安装大数据友好特性Apache Accumulo NoSQL数据库
 
总结
在今天的教程中,我们了解了如何设置Apache Accumulo及其运行所必需的其它组件。我们还利用HDFS以伪分布模式创建出一套能够运行在单一小型服务器上的简单实例。当然,出于性能优化的考虑,大家应该在生产场景下确保HDFS以完全分布式模式运行。
在生产场景下,这里还强烈建议大家将各进程部署在至少拥有8 GB内存且处理器计算核心数量不少于4个的服务器之上,这意味着每个进程能够拥有2 GB内存与1个独立计算核心。另外,大家也可以将各个组件分别部署在不同的服务器上。
欲了解更多相关信息,可参考Apache Accumulo的用户手册(http://accumulo.apache.org/index.html).
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25889.html