安裝 Accumulo——突破自己,就是成長


前言

在我剛開始接觸分布式集群的時候,是自己在幾台虛擬機中手動安裝的 Hadoop 和 Spark ,所以當時對 Hadoop 的配置有個簡單的印象 ,但是后面發現了 Cloudera 和 Ambari 之后(兩個分布式集群自動管理工具),就再沒有手動安裝過。這就導致我用了很久的 Accumulo 卻從未手動安裝過,使用 Cloudera 安裝導致我根本沒有關心 Accumulo 是怎么從無到有冒出來的,只是簡單了解了安裝的大概過程,並學會了如何使用它。

今天不同,當我再次安裝 Cloudera 集群的時候,首先選擇了 Ubuntu 16.04 操作系統進行安裝(是的,我是個非常願意嘗試新鮮事物的人),無耐裝好之后才發現使用 16.04 導致 Accumulo 的安裝包(Parcel)根本無法進行集群內的分發,這就意味着我無法安裝它,折騰了半天之后未果,當然自己也有想着手動安裝一下算了,但是懶惰的本性讓我打消了這個念頭,我不願意冒着折騰半天未必能成功的風險去手動安裝,因為我有更好的解決方案——只需要將操作系統退回到 14.04 即可,因為我有多次在 14.04 上安裝成功的經驗,所以胸有成竹。但氣憤的是不知什么問題,整個集群安裝成功之后在安裝 Accumulo 的時候一直報錯,報錯的原因是環境變量的問題,用慣了集群,我根本不知道這個問題應當如何解決,多次折騰未果。把人逼到絕路的時候,也就是應當改變的時候了,於是只能走上手動安裝,這就有了今天這篇文章。

安裝過程

打開 Accumulo 官網,很自然的先去找 quickstart,網址為:http://accumulo.apache.org/quickstart-1.x/。文檔里寫的很清楚,但是剛接觸的人(比如我這個貌似老手的新手),也會有點不知所雲,學習的最好方式就是去嘗試,於是我毫不猶豫的就按照提示步驟執行下去。

首先是下載,無需多言,在 http://accumulo.apache.org/downloads/ 中選擇自己想要安裝的版本即可。

下載完后,解壓縮並進入目錄,前幾步都沒有問題,按照要求執行即可,當走到 Initialization 的時候一直在報錯,折騰了許久才慢慢明白怎么回事,解決問題的過程也就對 Accumulo 和 Accumulo 的安裝有了更加清晰的認識,知道了 Accumulo 到底是怎么回事。

安裝過程中的難點主要在於配置 conf/accumulo-site.xmlconf/accumulo-env.sh 這兩個文件,要配置好這兩個文件就要對 Cloudera 和基礎的 Hadoop 有了解。我先來介紹一下這兩個文檔如何修改,再來對修改的原因和整體做一介紹。

  • conf/accumulo-site.xml

instance.volumes 改為 hdfs://master:8020/accumulo,master 為 hadoop namenode 節點的
IP 或者 hostname,8020 為 cdh 環境下的 HDFS 端口;將 instance.zookeeper.host 修改為 zk1:2181,zk2:2181,zk3:2181,其中 zk1-3 為 zookeeper 的節點 IP 或 hostname,當然不一定是 3 個,根據自己的情況而定;將 trace.token.property.password 修改為你想要設置的密碼;將 general.classpaths 修改如下:

$ACCUMULO_HOME/lib/accumulo-server.jar,
$ACCUMULO_HOME/lib/accumulo-core.jar,
$ACCUMULO_HOME/lib/accumulo-start.jar,
$ACCUMULO_HOME/lib/accumulo-fate.jar,
$ACCUMULO_HOME/lib/accumulo-proxy.jar,
$ACCUMULO_HOME/lib/[^.].*.jar,
$ZOOKEEPER_HOME/zookeeper[^.].*.jar,
$HADOOP_CONF_DIR,
$HADOOP_PREFIX/share/hadoop/common/[^.].*.jar,
$HADOOP_PREFIX/jars/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/common/lib/(?!slf4j)[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/hdfs/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/mapreduce/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/yarn/[^.].*.jar,
$HADOOP_PREFIX/share/hadoop/yarn/lib/jersey.*.jar

主要是添加 $HADOOP_PREFIX/jars/[^.].*.jar 項,這個文件中存放了與 hadoop 有關的所有 jar 包,注意匹配處必須寫為 [^.].*.jar,直接寫通配符 *.jar 不能正常工作,這涉及到正則表達式,具體可以查閱相關資料。

  • conf/accumulo-env.sh

設置 HADOOP_PREFIX/opt/cloudera/parcels/CDH-5.11.2-1.cdh5.11.2.p0.4,最后一級目錄根據安裝版本不同會發生變化;設置 JAVA_HOME/usr/jdk1.8.0_*,此處是自己安裝的 jdk 目錄,安裝 jdk 查閱相關資料,JDK1.8應該是個不錯的選擇;設置 ZOOKEEPER_HOME/opt/cloudera/parcels/CDH/lib/zookeeper;設置 HADOOP_CONF_DIR/etc/hadoop/conf

完成上述兩個文件的修改,在接着官方文檔執行即可,所以整個步驟其實非常簡單。下面我來分析一下整個安裝過程並通過安裝過程簡單分析一下 Accumulo 的大概工作原理。

分析

在下載並解壓完壓縮包之后會執行 ./bin/bootstrap_config.sh,其實這一步的目的就是為了生成和簡單配置上面要修改的兩個文件,整個安裝過程的核心也在上面的兩個文件,先來看一下 conf/accumulo-env.sh 文件要修改的內容,其實就是 Hadoop 安裝路徑、JDK 路徑和 Zookeeper 安裝路徑,這三個路徑剛好說明了 Accumulo 的工作原理:基於 JDK 通過 Zookeeper 進行集群調度,並將自己的數據保存到 HDFS 中,就像普通的數據庫數據保存在文件系統中,Accumulo 將數據保存到 HDFS 中,這樣就實現了分布式數據庫。由於我是采用 CDH 安裝的 Hadoop 集群,所以 HADOOP_PREFIXZOOKEEPER_HOME 是固定的,Cloudera 通過 pacel 管理集群,所以其安裝路徑都是在 /opt/cloudera/parcels 文件夾下。

知道了上面這些也就明白了 conf/accumulo-site.xml 的修改原因,instance.volumes 指定了 HDFS 節點,使得 Accumulo 能夠正常訪問 HDFS;instance.zookeeper.host 指定了 zookeeper 集群的路徑,使得 zookeeper 能夠管理 accumulo;general.classpaths 指定了 Accumulo 工作的 jar 包。

總結

在我嘗試手動安裝 Accumulo 並成功之后,我才發現 Accumulo 並不復雜。一切事情都是這樣,你想象中很復雜或者懼怕的事情其實只要你動手去實踐、一點點去突破就會慢慢的解決,當然一切看似簡單的事情也都會有各種各樣的問題,只有親自去嘗試才是解決問題和發現問題的最好方式。

紙上得來終覺淺,絕知此事要躬行!共勉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM