• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

      1 引言(Introduction)

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

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

      2 云存儲(chǔ)平臺(tái)設(shè)計(jì)(Design of cloud storage platform)

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

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

      測(cè)試環(huán)境為了控制成本,采用虛擬化技術(shù)虛擬出三臺(tái)Linux服務(wù)器構(gòu)成集群,主機(jī)名分別設(shè)為Hadoop101、Hadoop102、Hadoop103,集群配置Hadoop101 CPU核心數(shù)4,磁盤(pán)空間50 GB,內(nèi)存大小8 GB;Hadoop102 CPU核心數(shù)2,磁盤(pán)空間50 GB,內(nèi)存大小4 GB;Hadoop103 CPU核心數(shù)2,磁盤(pán)空間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 請(qǐng)求處理系統(tǒng)設(shè)計(jì)

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

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

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

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

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

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

      表1 文件表Tab.1 File table

      3 云存儲(chǔ)平臺(tái)實(shí)現(xiàn)(Implementation of cloud storage)

      3.1 云存儲(chǔ)平臺(tái)的搭建

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

      假設(shè)已經(jīng)配置好服務(wù)器集群的靜態(tài)網(wǎng)址,并且Java開(kāi)發(fā)環(huán)境都配置正確,集群之間可以進(jìn)行免密登錄。下面對(duì)Apache Hadoop的具體實(shí)現(xiàn)步驟做簡(jiǎ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ù)的存儲(chǔ)目錄。

      第四步,在HADOOP_HOME下的etc/hadoop中修改hdfs-site.xml配置文件,指定NameNode的網(wǎng)頁(yè)端訪問(wèn)地址為hadoop101:9870,指定SecondaryNameNode的WEB端訪問(wèn)地址為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來(lái)啟動(dòng)HDFS集群,在瀏覽器訪問(wèn)hadoop101:9870,可以查看Hadoop集群的節(jié)點(diǎn)狀態(tài)。

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

      Zookeeper的作用在前文已經(jīng)介紹過(guò),這里是Zookeeper的集群安裝和安裝過(guò)后的配置過(guò)程。下面對(duì)Apache Zookeeper的具體實(shí)現(xiàn)步驟做簡(jiǎ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ù)存儲(chǔ)路徑,存放在ZOOKEEPER_HOME/zkData,添加hadoop101、hadoop102、hadoop103的Zookeeper監(jiān)聽(tīng)地址。

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

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

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

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

      下面對(duì)Apache HBase的具體實(shí)現(xiàn)步驟做簡(jiǎ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存儲(chǔ)的位置,并指定HBase以分布式的方式工作,再指定使用自己的Zookeeper集群。

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

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

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

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

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

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

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

      4 性能測(cè)試(Performance testing)

      4.1 HBase庫(kù)億級(jí)大數(shù)據(jù)查詢(xún)性能測(cè)試

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

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

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

      表2 HBase查詢(xún)性能測(cè)試Tab.2 Tests of HBase query performance

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

      4.2 Hadoop集群性能測(cè)試

      (1)寫(xiě)性能I/O測(cè)試

      使用Hadoop自帶的基準(zhǔn)測(cè)試工具進(jìn)行HDFS寫(xiě)性能I/O測(cè)試,運(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寫(xiě)入10 個(gè)128 MB的文件,測(cè)試結(jié)果如圖2所示。

      圖2 HDFS寫(xiě)性能測(cè)試圖Fig.2 Test plot of HDFS write performance

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

      (2)讀性能I/O測(cè)試

      接下來(lái)進(jìn)行HDFS讀性能測(cè)試,使用Hadoop自帶的基準(zhǔn)測(cè)試工具,運(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的文件,測(cè)試結(jié)果如圖3所示。

      圖3 HDFS讀性能測(cè)試圖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ù)云存儲(chǔ)平臺(tái),成功實(shí)現(xiàn)了一個(gè)自動(dòng)化、高效率的大數(shù)據(jù)云存儲(chǔ)平臺(tái)。各部分的功能都能實(shí)現(xiàn)后,搭建合適的環(huán)境進(jìn)行功能的測(cè)試,通過(guò)測(cè)試結(jié)果可見(jiàn)各模塊的功能需求可以滿(mǎn)足使用條件,可用性很高。

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

      猜你喜歡
      配置文件集群數(shù)據(jù)庫(kù)
      集群式AUV可控分群控制算法
      提示用戶(hù)配置文件錯(cuò)誤 這樣解決
      搭建簡(jiǎn)單的Kubernetes集群
      互不干涉混用Chromium Edge
      忘記ESXi主機(jī)root密碼怎么辦
      一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
      電子制作(2018年11期)2018-08-04 03:25:40
      Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
      數(shù)據(jù)庫(kù)
      勤快又呆萌的集群機(jī)器人
      數(shù)據(jù)庫(kù)
      南丰县| 册亨县| 辽宁省| 长阳| 栖霞市| 湘潭市| 龙岩市| 枣庄市| 开阳县| 萨迦县| 千阳县| 东平县| 沧州市| 夏津县| 宣威市| 团风县| 博兴县| 易门县| 莫力| 政和县| 彭水| 塘沽区| 田阳县| 镇康县| 乌兰县| 周至县| 永仁县| 吴忠市| 专栏| 巴中市| 普兰县| 寿阳县| 班戈县| 清徐县| 沙河市| 嫩江县| 平泉县| 锡林浩特市| 察隅县| 肥乡县| 博罗县|