丁晶+李剛+譚毅培
摘要
隨著信息化技術的不斷發(fā)展,我們所接觸的數(shù)據量也在呈爆炸式增長,存儲的數(shù)據也由GB、TB級邁向PB、ZB級,對傳統(tǒng)的數(shù)據存儲技術帶來了巨大的挑戰(zhàn)。而HDFS分布式存儲系統(tǒng)以其低成本與高效率滿足了我們海量數(shù)據存儲的需求。天津市地震局也通過建立起了Hadoop大數(shù)據平臺對測震臺網產生的大量寶貴的地震數(shù)據進行存儲與應用。
【關鍵詞】地震 存儲技術 數(shù)據 Hadoop HDFS
隨著計算機技術、網絡技術的不斷發(fā)展,生活中我們所接觸的信息量也在呈爆炸式增長。在地震行業(yè)中也是如此,每天最少會產生幾GB的SEED文件,解壓后的文件達到幾十GB,加上其他一些輔助信息和索引信息,每年至少會產生幾十TB的數(shù)據量。而且隨著地震臺站數(shù)量和強震數(shù)據的不斷增多,可以預見今后的測震數(shù)據增速會越來越快。如何有效存儲管理這些海量數(shù)據,確保這些珍貴數(shù)據在任何情況下都不會丟失,是我們急需解決的問題。
針對這一問題,天津市地震局從2014年開始,通過對11臺PC服務器建立起了Hadoop大數(shù)據系統(tǒng),用于進行測震臺網數(shù)據的存儲與應用。
1天津市地震局Hadoop系統(tǒng)介紹
Hadoop系統(tǒng)近幾年發(fā)展迅速,它是由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構,是一種分布式處理軟件框架,用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,并充分利用計算機集群的優(yōu)勢進行高速運算和安全存儲。Hadoop包括分布式文件系統(tǒng)HDFS、分布式數(shù)據庫HBase、海量數(shù)據并行編程模型與計算框架MapReduce、分布式數(shù)據倉庫Hive、分布式協(xié)調系統(tǒng)zookeeper等等。
HDFS即基于Hadoop的分布式文件系統(tǒng)(Hadoop Distributed File System),HDFS具有高容錯性的能力,使得該文件系統(tǒng)具有較好的容錯特性,且可以在通用平臺上使用,故此能夠將該文件系統(tǒng)在廉價的機器上部署(郝偉姣等,2009);HDFS還具備高吞吐量特性,對超大數(shù)據集系統(tǒng)的應用程序有著良好的支持與服務。HDFS還可以以流的形式訪問文件系統(tǒng)中的數(shù)據。
Hbase是一個分布式的、面向列的開源數(shù)據庫;它的底層數(shù)據存儲是基于HDFS之上的,采用了主/從架構的模式即Hmaster/Hregionserver結構。
MapReduce是一種編程模型,用于大規(guī)模數(shù)據集(大于1TB)的并行運算,包括大規(guī)模的文字處理、數(shù)據挖掘等。
Hive是一個構建在Hadoop上的數(shù)據倉庫,通過hive存儲在HDFS平臺上的數(shù)據操作與傳統(tǒng)SQL結合起來,讓精通SQL編程而不太擅長java的開發(fā)人員能夠輕松的向Hadoop平臺遷移(劉鵬,2013)。
Zookeeper是一個針對大型分布式系統(tǒng)的可靠協(xié)調系統(tǒng),提供的功能包括:配置維護、名字服務、分布式同步、組服務等。
天津市地震局于2014年開始建立測試的Hadoop系統(tǒng),共采用11臺廉價的PC服務器來組建,存儲能力為40TB,采用了主/從(Master/Slave)體系結構(劉鵬,2013),包括1個NameNode主節(jié)點、10個DataNode從節(jié)點,其中一臺從節(jié)點上部署了Secondarynamnenode進程用于主節(jié)點的備份,系統(tǒng)結構圖和配置情況如表1所示。
搭建好的系統(tǒng)用于天津市地震局測震臺網連續(xù)波形數(shù)據在線存儲與服務試驗。
2Hadoop系統(tǒng)的設計
2.1HDFS數(shù)據存儲
存儲的數(shù)據由TB級邁向PB、ZB級的需求,對傳統(tǒng)的數(shù)據存儲技術帶來了巨大的挑戰(zhàn)。而HDFS分布式存儲系統(tǒng)以其低沉本與高效率滿足了我們海量數(shù)據存儲的需求。
分布式文件系統(tǒng)HDFS將海量文件存儲在一個大集群的多臺計算機上。HDFS將每一個文件以分塊序列的形式進行存儲。
HDFS架構中包含的節(jié)點和其對應的功能:
2.1.1Namenode
Namenode即主控制器服務器,是HDFS系統(tǒng)的管理者,記錄文件數(shù)據塊在每個Datanode上的位置和副本信息,協(xié)調客戶端對文件的訪問,以及記錄命名空間內的改動或命名空間本身屬性的改動。
由于一旦主節(jié)點Namenode的設備發(fā)生故障或者Namenode進程宕掉,那么會造成系統(tǒng)中的文件丟失,所以為了提高我局hadoop系統(tǒng)的信息安全性,防止由于單點故障引起的數(shù)據丟失,故對Namenode進行備份,將Secondarynamenode節(jié)點部署在從節(jié)點(dd-11)上。
2.1.2Secondarynamenode
Secondarynamenode是為了防止Namenode成為系統(tǒng)的單點故障而設置的,Secondarynamenode進程會按照一定的時間間隔保存著文件系統(tǒng)元數(shù)據的快照,這樣在系統(tǒng)主節(jié)點發(fā)生故障時能盡可能的減少數(shù)據的損失。(由于Secondarynamenode總是落后于Namenode,所以在Namenode宕機時,會造成部分數(shù)據的丟失。)
2.1.3Datanode
Datanode是HDFS文件系統(tǒng)中保存數(shù)據的節(jié)點,HDFS系統(tǒng)會根據你在hdfs-site.xml中設置的值將文件分割成若干的數(shù)據塊,存儲在不同的Datanode上。達到冗余備份的作用。
Hadoop平臺可以通過修改配置文件來動態(tài)的增刪計算節(jié)點,具有良好的可擴展性。Hadoop平臺可以擴展到數(shù)千個節(jié)點進行大規(guī)模集群運算,并且具有對數(shù)據的自動備份功能,防止硬件的損壞造成的數(shù)據丟失(肖衛(wèi)青等,2015)。
2.2Hbase簡介
Hbase是基于Hadoop的開源數(shù)據庫,是一套具有高可靠性、高性能、列存儲、可伸縮、實時讀寫的數(shù)據庫系統(tǒng)。endprint
利用HBase技術可在廉價PC Server上搭建起大規(guī)模結構化存儲集群。其目的是處理龐大的表,可以用普通的計算機處理10億行數(shù)據,并且有數(shù)百萬列元素組成的數(shù)據表這張表的索引是行關鍵字。HBase可以直接使用本地的文件系統(tǒng)和Hadoop作為數(shù)據存儲方式,不過為了提高數(shù)據的可靠性和系統(tǒng)的健壯性,發(fā)揮HBase處理大數(shù)據量等功能,需要使用Hadoop作為文件系統(tǒng)。
Hbase中主要包含以下幾部分:
2.2.1Hmaster
Hmaster是整個Hbase系統(tǒng)中的主節(jié)點,它負責對各個用戶的數(shù)據表進行增刪改查,負責管理HRegionServer的負載均衡,調整Region分布,并且在HRegionServer停機后,負責失效HRegionServer上Region遷移。
2.2.2HRegionServer
Hbase中HRegionServer主要負責一些具體的數(shù)據存儲,向HDFS文件系統(tǒng)中讀寫數(shù)據等。
2.2.3Zookeeper
Zookeeper是Hbase體系中的協(xié)調管理節(jié)點,提供分布式協(xié)作、分布式同步、配置管理等功能。
3Hadoop系統(tǒng)安裝調試與配置
Hadoop系統(tǒng)的安裝:
3.1軟件及版本
如表2所示。
3.2在所有機器上建立相同的用戶(如grid)
useradd –m grid passwd grid之后提示為用戶grid設置密碼
3.3下載安裝Java安裝在/usr下的java文件夾下
注意:安裝前需提高權限(chmod755/mnt/jdk-6u24-linux-i586.bin)
3.4下載hadoop,并且解壓在文件夾下
tar-zxvf/mnt/hadoop-2.5.2
3.5修改各主機名及/etc/hosts
Namenode、datanode中設置所有主機的ip和主機名。
3.6SSH的配置
該配置主要是實現(xiàn)各主機之間執(zhí)行指令時不需要輸入密碼,需要在所有主機上建立.ssh目錄,執(zhí)行:mkdir.ssh;在namenode上生成密鑰對,執(zhí)行ssh-keygen-trsa;將生成的密鑰遠程復制到其他從節(jié)點上,執(zhí)行如下命令:
cd?/.ssh
cpid rsa.pubauthorized keys
scpauthorized keysdd-ll:/home/grid/.ssh
最后進入所有主機的.ssh目錄改變該文件的許可權限:
chmod 644 authorized keys
這樣的話從主節(jié)點向其他從節(jié)點發(fā)起SSH連接時,只有第一次登錄時才需要輸入密碼,以后可以實現(xiàn)無密鑰登錄。
3.7配置相應的環(huán)境變量
exportJAVA_HOME=/usr/java/jdkl.6.027/
exportJRE_HOME=/usr/java/jdkl.6.027/
jre
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
exportHADOOP_HOME=/home/grid/hadoop-2.5.2
exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
exportPATH=$PATH:$HADOOPHOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
3.8配置etc/hadoop/core-site.xml、etc/hadoop/hdfs-site.xml、etc/hadoop/mapred-site.xml、etc/hadoop/yarn-site.xml等四個文件
如表3所示。
3.9配置masters、slaves等參數(shù)
主節(jié)點設置為master,從節(jié)點設置為slaves
3.10將hadoop主節(jié)點的安裝文件復制到其他從節(jié)點上
scp-r/home/grid/hadoop-2.5.2dd-ll:/home/
grid
scp>r/home/grid/hadoop-2.5.2dd-12:/home/grid
……
scp-r/home/grid/hadoop-2.5.2dd-20:/home/grid
3.11格式化分布式系統(tǒng),命令如下
/home/grid/hadoop-2.5.2/bin/hadoopnamenode-format
3.12在主節(jié)點上啟動hadoop進程
/home/grid/hadoop-2.5.2/sbin/start-all.sh
3.13在各個節(jié)點上運行/usr/java/jdkl.6.O-27/bin/jps檢查各節(jié)點進程的啟動情況結果
如圖1所示。
Hbase系統(tǒng)的安裝。
3.14配置Hbase環(huán)境變量
exportJAVA_HOME=/usr/java/jdkl.6.0_27/exportHADOOP_HOME=/home/grid/hadoop-2.5.2/
exportHBASE_CLASSPATH=/home/grid/hadoop-2.5.2/etc/hadoopendprint
exportHBASE_MANAGES_ZK=true(表示由Hbase負責啟動和關閉Zookeeper)
3.15配置/conf/hbase-site.xml文件
修改hbase.rootdir,將其指向Hadoop集群的Namenode(端口也必須保持一致),指定Hbase的存儲路徑;設置Zookeeper目錄以及Hmaster的路徑及端口。
3.16配置Hmaster與Hregionserver
在/conf/master中輸入Hmaster的節(jié)點,/conf/regionservers中輸入Hregionserver節(jié)點。
3.17把Hbase復制到其他機器上命令如下:
scp-r/home/grid/hbase-0.98.11-hadoop2dd-ll:/home/grid
3.18在主節(jié)點上啟動hbase進程
/home/grid/hbase-0.98.11-hadoop2/bin/start-hbase.sh
3.19在各個節(jié)點上運行/usr/java/jdkl.6.O-27/bin/jps檢查各節(jié)點進程的啟動情況
如圖2所示。
4Hadoop系統(tǒng)的應用效果
根據前面方法建立起來的hadoop大數(shù)據系統(tǒng)與基于hadoop系統(tǒng)的hbase開源數(shù)據庫,可以對天津市地震局測震臺網產生的地震大數(shù)據進行分布式存儲與應用,大量的地震波形數(shù)據可以以seed格式文件存儲于HDFS文件系統(tǒng)中,也可以以一定時間尺度解析載入Hbase
Hadoop系統(tǒng)HDFS的web管理界面,此圖中可以看到HDFS系統(tǒng)整體運行情況、快照以及任務運行狀態(tài),可以看到整個系統(tǒng)包含有10個從節(jié)點,總存儲總容量為35.81TB。圖4是各從節(jié)點的運行狀況,其中可以清晰的看到各DataNode的使用情況以及磁盤利用率等數(shù)據。圖5是基于Hadoop系統(tǒng)的Hbase開源數(shù)據庫系統(tǒng)。可以看到各個Hregionserver節(jié)點的基本信息、存儲任務以及數(shù)據表的基本情況。
感謝
系統(tǒng)在研究、開發(fā)和測試過程中,得到了天津市地震局周利霞、王曉磊、劉磊等的大力支持和幫助,在此表示衷心的感謝。
參考文獻
[1]郝偉姣,周世健,彭大為等.基于HADOOP平臺的云GIS構架研究[J].江西科學,2009,31(01):109-112.
[2]劉鵬.實戰(zhàn)hadoop—開啟通向云計算的捷徑[M].北京:電子工業(yè)出版社,2013.
[3]劉軍.大數(shù)據處理[M].北京:人民郵電出版社,2015.
[4]王文青.大數(shù)據架構下的地震波形數(shù)據分析應用淺析[J].電腦編程技巧與維護,2016(09).
[5]肖衛(wèi)青,楊潤芝,胡開喜等.Hadoop在氣象數(shù)據密集型處理領域中的應用[J].氣象科技,2015,43(05):823-828.endprint