国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Hadoop的學(xué)習(xí)行為數(shù)據(jù)云存儲平臺的設(shè)計(jì)與實(shí)現(xiàn)

2022-10-10 01:23蔡春花黃思遠(yuǎn)高繼梅
軟件工程 2022年10期
關(guān)鍵詞:配置文件集群數(shù)據(jù)庫

蔡春花,黃思遠(yuǎn),高繼梅

(黃河交通學(xué)院,河南 焦作 454000)

1 引言(Introduction)

在當(dāng)下為數(shù)不多的云存儲相關(guān)技術(shù)中,Hadoop的HDFS(Hadoop Distributed File System)文件系統(tǒng)是所有互聯(lián)網(wǎng)公司中使用最廣泛的分布式文件系統(tǒng)。HDFS是Google在2003 年提出的GFS(Google File System)的一個(gè)開放源碼的實(shí)現(xiàn),不過在Google的設(shè)計(jì)中,為了降低數(shù)據(jù)存儲與數(shù)據(jù)管理的耦合,GFS僅對數(shù)據(jù)的存儲負(fù)責(zé)而不提供類似數(shù)據(jù)庫查詢的方案。也就是說,GFS只存數(shù)據(jù),而對數(shù)據(jù)的具體內(nèi)容一無所知,自然也就不能提供基于內(nèi)容的檢索功能。所以,更進(jìn)一步,Google開發(fā)了Bigtable作為數(shù)據(jù)庫,向上層服務(wù)提供基于內(nèi)容的各種功能,而HBase是Bigtable的實(shí)現(xiàn)。與原始的存儲模式相比,云存儲具有訪問方便、可靠性高、成本低、可擴(kuò)展性好等優(yōu)點(diǎn)。目前,云計(jì)算技術(shù)在中國的應(yīng)用已經(jīng)從幾年前僅在國家高端領(lǐng)域推廣到民用技術(shù)等領(lǐng)域,云存儲已成為未來存儲的趨勢。由于一些相關(guān)云存儲技術(shù)的開源性質(zhì),云存儲的應(yīng)用領(lǐng)域變得越來越廣泛。云存儲所用的存儲結(jié)構(gòu)不同于傳統(tǒng)的網(wǎng)絡(luò)體系,隨著科技的發(fā)展,它將會取代傳統(tǒng)模式的存儲數(shù)據(jù)的方法。

在線學(xué)習(xí)行為的日志數(shù)據(jù)如學(xué)生登錄、瀏覽資源、點(diǎn)擊課件等操作產(chǎn)生的日志數(shù)據(jù)來源于在線學(xué)習(xí)平臺,平臺上的日志數(shù)據(jù)將會依據(jù)不同的數(shù)據(jù)格式,分別存儲于與之對應(yīng)的數(shù)據(jù)庫中。首先,網(wǎng)站中每天都可能產(chǎn)生較多關(guān)于學(xué)習(xí)者觀看視頻、學(xué)習(xí)課程等的日志數(shù)據(jù);其次,學(xué)習(xí)平臺的數(shù)據(jù)需要進(jìn)行保留(至少保留一年時(shí)間),以供跨年數(shù)據(jù)的分析及對比;而HDFS在Hadoop技術(shù)體系中負(fù)責(zé)分布式存儲數(shù)據(jù),一個(gè)文件存儲在HDFS上時(shí)會被分成若干個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊分別存儲在不同的服務(wù)器上,因此HDFS解決了存儲容量以及數(shù)據(jù)安全的問題。

2 云存儲平臺設(shè)計(jì)(Design of cloud storage platform)

2.1 存儲集群規(guī)模及服務(wù)的規(guī)劃

云存儲業(yè)務(wù)主要面向海量數(shù)據(jù)和文件的存儲和計(jì)算,強(qiáng)調(diào)單節(jié)點(diǎn)存儲容量和成本,因此配置相對廉價(jià)的串口硬盤,滿足成本和容量的需求。

測試環(huán)境為了控制成本,采用虛擬化技術(shù)虛擬出三臺Linux服務(wù)器構(gòu)成集群,主機(jī)名分別設(shè)為Hadoop101、Hadoop102、Hadoop103,集群配置Hadoop101 CPU核心數(shù)4,磁盤空間50 GB,內(nèi)存大小8 GB;Hadoop102 CPU核心數(shù)2,磁盤空間50 GB,內(nèi)存大小4 GB;Hadoop103 CPU核心數(shù)2,磁盤空間50 GB,內(nèi)存大小4 GB。

集群服務(wù)規(guī)劃:Hadoop101部署的服務(wù)有NameNode、DataNode、QuorumPeerMain、HMaster、HRegionServer、SecondaryNameNode;Hadoop102部署的服務(wù)有DataNode、QuorumPeerMain、HRegionServer;Hadoop103部署的服務(wù)有DataNode、QuorumPeerMain、HRegionServer、SecondaryNameNode。

2.2 請求處理系統(tǒng)設(shè)計(jì)

云存儲平臺是指Spring Boot應(yīng)用服務(wù)器,可以為用戶直接提供服務(wù),比如進(jìn)行文件的上傳或下載?;贖adoop的學(xué)習(xí)行為數(shù)據(jù)云存儲平臺用戶功能模塊主要包含用戶注冊登錄、文件操作、用戶關(guān)注和文件分享等。用戶功能模塊如圖1所示。

圖1 用戶功能模塊框架圖Fig.1 Framework diagram of the user function module

2.3 HBase數(shù)據(jù)表設(shè)計(jì)

傳統(tǒng)關(guān)系型數(shù)據(jù)庫是可以支持隨機(jī)訪問的,但關(guān)系型數(shù)據(jù)庫卻不能很好地適用于存儲海量的數(shù)據(jù),比如關(guān)系型數(shù)據(jù)庫MySQL,單表在存放約500萬條的數(shù)據(jù)時(shí),性能會大大降低。在這種情況下,必須有一種新的方案來解決海量數(shù)據(jù)存儲和隨機(jī)訪問的問題,HBase就是其中之一,HBase的單表可存儲百億級的數(shù)據(jù)且不影響查詢效率。

HBase的表結(jié)構(gòu)設(shè)計(jì)與關(guān)系型數(shù)據(jù)庫有很多不同,主要HBase有行鍵(Row Key)和列族(Column Family)、時(shí)間戳(Time Stamp)這幾個(gè)全新的概念,如何設(shè)計(jì)表結(jié)構(gòu)就非常重要。HBase就是通過Table、Row Key、Column Family、Time Stamp確定一行數(shù)據(jù)。這與MySQL、Oracle等關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System,RDBMS)完全不同。大數(shù)據(jù)云存儲平臺涉及的主要表有file表、id_user表、user_file表和share表等。

在設(shè)計(jì)HBase列族時(shí),使用文件的編號(Identity Document,ID)來作為每一個(gè)行鍵,使用file來當(dāng)列族,只設(shè)計(jì)一個(gè)列族,file中包含的各種字段都是該列族的列,使用Row Key和Column Family可以確定一個(gè)存儲單元(Cell),使用Time Stamp可以確定最新版本,如表1所示。

表1 文件表Tab.1 File table

3 云存儲平臺實(shí)現(xiàn)(Implementation of cloud storage)

3.1 云存儲平臺的搭建

(1)Hadoop集群的安裝及配置

假設(shè)已經(jīng)配置好服務(wù)器集群的靜態(tài)網(wǎng)址,并且Java開發(fā)環(huán)境都配置正確,集群之間可以進(jìn)行免密登錄。下面對Apache Hadoop的具體實(shí)現(xiàn)步驟做簡要闡述。

第一步,在Apache Hadoop的官方文檔中下載Apache Hadoop3.1.3的安裝包到hadoop101,并解壓到/opt/app/hadoop,再將Hadoop添加到環(huán)境變量中。

第二步,在HADOOP_HOME下的etc/hadoop中修改hadoop-env.sh配置文件,其中添加JAVA_HOME的路徑。

第三步,在HADOOP_HOME下的etc/hadoop中修改core-site.xml配置文件,添加NameNode的地址hadoop101:8020,并指定Hadoop數(shù)據(jù)的存儲目錄。

第四步,在HADOOP_HOME下的etc/hadoop中修改hdfs-site.xml配置文件,指定NameNode的網(wǎng)頁端訪問地址為hadoop101:9870,指定SecondaryNameNode的WEB端訪問地址為hadoop103:9868。

第五步,在HADOOP_HOME下的etc/hadoop/workers中添加節(jié)點(diǎn),共三行,分別是hadoop101、hadoop102、hadoop103。

第六步,分發(fā)Hadoop和環(huán)境變量配置文件到hadoop102、hadoop103。

至此,Hadoop集群的安裝及配置已經(jīng)完成,可以使用sbin/start-dfs.sh來啟動HDFS集群,在瀏覽器訪問hadoop101:9870,可以查看Hadoop集群的節(jié)點(diǎn)狀態(tài)。

(2)Zookeeper集群的安裝及配置

Zookeeper的作用在前文已經(jīng)介紹過,這里是Zookeeper的集群安裝和安裝過后的配置過程。下面對Apache Zookeeper的具體實(shí)現(xiàn)步驟做簡要闡述。

第一步,在Apache Zookeeper官方下載Apache Zookeeper3.5.7的安裝包,并上傳到hadoop101,解壓到/opt/app/zookeeper,再將Zookeeper添加到環(huán)境變量中。

第二步,將ZOOKEEPER_HOME/conf/下的zoo_sample.cfg文件重命名為zoo.cfg,并在其中添加Zookeeper的數(shù)據(jù)存儲路徑,存放在ZOOKEEPER_HOME/zkData,添加hadoop101、hadoop102、hadoop103的Zookeeper監(jiān)聽地址。

第三步,在ZOOKEEPER_HOME下創(chuàng)建zkData文件夾,并在zkData文件夾下創(chuàng)建myid文件,并寫入序號1。

第四步,分發(fā)Zookeeper到hadoop102、hadoop103,并修改myid文件為不同的ID序號,在hadoop102中寫入2,在hadoop103中寫入3,保證ID序號不同即可。

至此,Zookeeper集群的安裝及配置已經(jīng)完成,可以使用bin/zkServer.sh start命令進(jìn)行Zookeeper服務(wù)的啟動,要注意的是需要在三臺服務(wù)器上都運(yùn)行該命令。啟動完成后可以使用bin/zkServer.sh status查看Zookeeper是否啟動成功。

(3) HBase集群的安裝及配置

下面對Apache HBase的具體實(shí)現(xiàn)步驟做簡要闡述。

第一步,在Apache HBase官方下載Apache HBase2.0.5的安裝包,并上傳到hadoop101,解壓到/opt/app/hbase,再將HBase添加到環(huán)境變量中。

第二步,在HBASE_HOME/conf下的hbase-env.sh配置文件中將HBASE_MANAGES_ZK的屬性值設(shè)置為false,代表使用我們自己配置的Zookeeper集群而不是使用HBase自帶的Zookeeper。

第三步,在HBASE_HOME/conf下的hbase-site.xml中添加HBase的數(shù)據(jù)在HDFS存儲的位置,并指定HBase以分布式的方式工作,再指定使用自己的Zookeeper集群。

第四步,在HBASE_HOME/conf下的regionservers中添加三行記錄,分別為hadoop101、hadoop102、hadoop103,代表HBase節(jié)點(diǎn)。

第五步,分發(fā)HBase到hadoop102、hadoop103。

至此,HBase集群的安裝及配置已經(jīng)完成,可以使用bin/start-hbase.sh來啟動HBase集群,并且可以使用瀏覽器訪問hadoop101:16010查看HBase集群的狀態(tài)。

3.2 請求處理系統(tǒng)

用戶進(jìn)行成功注冊驗(yàn)證后,使用正確的信息即可登錄到系統(tǒng)。在Controller層進(jìn)行用戶認(rèn)證后如果用戶信息沒問題,那么即可放行用戶進(jìn)入平臺,如果用戶信息不正確,會提示用戶。

其中文件分享部分關(guān)鍵代碼:

關(guān)注某用戶關(guān)鍵代碼:

4 性能測試(Performance testing)

4.1 HBase庫億級大數(shù)據(jù)查詢性能測試

在云存儲平臺HBase的所有表中,只有與文件file相關(guān)的表的數(shù)據(jù)會比較大,因此只需對file表進(jìn)行性能測試。下面對查詢性能測試步驟做簡要概述。

第一步,模擬生成file表的1 個(gè)列族,10 列字段,目標(biāo)數(shù)據(jù)量1億多條。

第二步,使用Java客戶端連續(xù)根據(jù)Row Key查5 條記錄,將查詢耗時(shí)記錄下來,得到表2。

表2 HBase查詢性能測試Tab.2 Tests of HBase query performance

通過表2可以看出,使用Row Key進(jìn)行查詢時(shí),初次查詢較慢,需要 8 秒左右的時(shí)間,但之后查詢很快,基本可以做到百毫秒級查詢。當(dāng)然,測試環(huán)境配置不高,如果在5 個(gè)節(jié)點(diǎn),16核CPU,128 GB內(nèi)存的配置下可以實(shí)現(xiàn)幾十毫秒甚至幾毫秒級查詢。這得益于HBase適合存儲PB級別的海量數(shù)據(jù)(百億千億量級條記錄),能在幾十到百毫秒內(nèi)返回?cái)?shù)據(jù),并且不會因?yàn)閿?shù)據(jù)量的劇增而導(dǎo)致查詢性能下降。

4.2 Hadoop集群性能測試

(1)寫性能I/O測試

使用Hadoop自帶的基準(zhǔn)測試工具進(jìn)行HDFS寫性能I/O測試,運(yùn)行如下命令hadoop jar/opt/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO-write-nrFiles 10-fileSize 128 MB,其中向HDFS寫入10 個(gè)128 MB的文件,測試結(jié)果如圖2所示。

圖2 HDFS寫性能測試圖Fig.2 Test plot of HDFS write performance

如圖2所示,向HDFS寫入了10 個(gè)文件,一共處理1,280 MB的數(shù)據(jù),每秒的吞吐量為73.64 MB,平均I/O速率為91.73 Mb/s,執(zhí)行時(shí)間為20.63 s。

(2)讀性能I/O測試

接下來進(jìn)行HDFS讀性能測試,使用Hadoop自帶的基準(zhǔn)測試工具,運(yùn)行如下命令hadoop jar/opt/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-clientjobclient-3.1.3-tests.jar TestDFSIO-read-nrFiles 10-fileSize128 MB,其中讀取HDFS的10 個(gè)128 MB的文件,測試結(jié)果如圖3所示。

圖3 HDFS讀性能測試圖Fig.3 Test plot of HDFS read performanc

如圖3所示,向HDFS讀取了10 個(gè)文件,一共處理1,280 MB的數(shù)據(jù),每秒的吞吐量為147.13 MB,平均I/O速率為348.56 Mb/s,執(zhí)行時(shí)間為19.48 s。

5 結(jié)論(Conclusion)

本論文重點(diǎn)研究以Hadoop和HBase集群實(shí)現(xiàn)的大數(shù)據(jù)云存儲平臺,成功實(shí)現(xiàn)了一個(gè)自動化、高效率的大數(shù)據(jù)云存儲平臺。各部分的功能都能實(shí)現(xiàn)后,搭建合適的環(huán)境進(jìn)行功能的測試,通過測試結(jié)果可見各模塊的功能需求可以滿足使用條件,可用性很高。

在平臺高峰時(shí)請求量非常大,如果不進(jìn)行“流量削峰”,服務(wù)器可能因無法承受而宕機(jī),因此接下來可使用Kafka來進(jìn)行“流量削峰”。在存儲成本方面,盡管存儲設(shè)備都是低廉設(shè)備,但是由于備份機(jī)制,存儲成本也需要進(jìn)一步控制。因此在接下來的平臺版本升級中,會使用壓縮技術(shù)對文件進(jìn)行壓縮,并且對不同用戶的相同文件進(jìn)行“文件指紋技術(shù)”,對于重復(fù)文件只保留一份。

猜你喜歡
配置文件集群數(shù)據(jù)庫
提示用戶配置文件錯(cuò)誤 這樣解決
互不干涉混用Chromium Edge
海上小型無人機(jī)集群的反制裝備需求與應(yīng)對之策研究
忘記ESXi主機(jī)root密碼怎么辦
一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
數(shù)據(jù)庫
勤快又呆萌的集群機(jī)器人
打印機(jī)設(shè)置
數(shù)據(jù)庫
安陆市| 邛崃市| 抚顺县| 阜阳市| 江山市| 梨树县| 镇赉县| 洛南县| 德庆县| 三河市| 毕节市| 庄河市| 防城港市| 左权县| 丰县| 宜都市| 荔浦县| 巍山| 长子县| 凌源市| 普兰店市| 登封市| 怀宁县| 仙桃市| 安吉县| 阿图什市| 昌吉市| 邳州市| 汶川县| 奉新县| 长乐市| 乌兰察布市| 神农架林区| 金乡县| 绥宁县| 阜康市| 渝中区| 浦东新区| 福建省| 博兴县| 海丰县|