999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MapReduce的氣候數(shù)據(jù)的分析的設計與實現(xiàn)

2020-08-21 09:05:27劉兆豐
數(shù)碼設計 2020年3期
關鍵詞:大數(shù)據(jù)計算機

劉兆豐

摘要:在社會的發(fā)展過程中,天氣對社會中的很多行業(yè)都有一定的影響。在當前階段,天氣預報作為全球主要對天氣進行預測的手段,在這種情況下,全球的氣候行業(yè)也產(chǎn)生了大量的數(shù)據(jù)(PB級別),并且數(shù)據(jù)每年還在持續(xù)的增長。為了解決使用傳統(tǒng)的關系型數(shù)據(jù)庫很難存儲與分析的問題,需要采用大數(shù)據(jù)的相關技術對氣候數(shù)據(jù)進行分析。

本設計采用MapReduce生態(tài)圈的一系列的工具,通過使用虛擬機的平臺,采用爬蟲軟件進行數(shù)據(jù)爬取的方式,用Map階段和Reduce階段的數(shù)據(jù)分析,分布式系統(tǒng)的數(shù)據(jù)存儲的方法,實現(xiàn)氣象數(shù)據(jù)的采集分析,并且將其展現(xiàn)出來的方式展示。使用這系列流程的系統(tǒng)可以輔助有關部門或企業(yè)進行決策部署。

關鍵詞:MapReduce;氣候數(shù)據(jù);大數(shù)據(jù);計算機

中圖分類號:P41文獻標識碼:A文章編號:1672-9129(2020)03-0047-03

Abstract:Intheprocessofsocialdevelopment,weatherhasacertainimpactonmanyindustriesinthesociety.Atthecurrentstage,weatherforecastingisthemainglobalweatherforecastingtool,andinthiscontext,theglobalclimateindustryalsoproducesalargeamountofdata(petabytes),andthedatacontinuestogroweveryyear.Inordertosolvetheproblemthatusingtraditionalrelationaldatabaseisdifficulttostoreandanalyze,itisnecessarytousebigdata-relatedtechnologiestoanalyzeclimatedata.

ThisdesignadoptsaseriesoftoolsofMapReduceecosystem.Throughtheuseofvirtualmachineplatform,crawlersoftwareisadoptedfordatacrawling,dataanalysisinMapstageandReducestage,anddatastorageindistributedsystem,meteorologicaldatacollectionandanalysisarerealizedanddisplayed.Systemsthatusethisseriesofprocessescanassistdepartmentsororganizationsintheirdecisionmakinganddeployment.

Keywords:MapReduce;Climaticdata;Bigdata;Thecomputer

1數(shù)據(jù)采集

1.1在線API數(shù)據(jù)獲取。此模塊的實現(xiàn)分為兩大部分:在線API數(shù)據(jù)獲取與數(shù)據(jù)分析。這里通過在特定網(wǎng)站提取天氣數(shù)據(jù):

StringbaiduUrl="http://api.map.baidu.com/telematics/v3/weather?";

publicstaticvoidmain(String[]args)throwsIOException{

URLurl=newURL(baiduUrl);

URLConnectionconn=url.openConnection();

while(reader.readLine()!=null){

StringBufferstr=newStringBuffer();

str.append(url+"");

這里此設計將使用百度天氣作為提取的天氣數(shù)據(jù)的來源。通過鏈接的方式,天氣網(wǎng)頁url轉變成字符流,通過粘貼的方式將所獲取的數(shù)據(jù)寫入進stringBuffer中。

1.2數(shù)據(jù)處理。

經(jīng)過第一步需要處理的數(shù)據(jù),稱之為元數(shù)據(jù)。因此將會有一些無用的部分。將所需數(shù)據(jù)進行提取,而此方法提取的數(shù)據(jù)為JSON格式,通過使用下面的方法獲得信息。

1.3JSON格式介紹:

JSON:一種與開發(fā)語言無關的輕量級數(shù)據(jù)存儲格式。全名是JavaScriptObjectNotation,它是數(shù)據(jù)格式的標準規(guī)范,最初是從JavaScript語言派生的,該語言具有用于JSON處理的API,Json由對象,數(shù)組,字符串組成。

1.4代碼程序實現(xiàn)。

初始化百度天氣url,Stringuri=showURI(k)。提取其中的cell屬性。Cellcell=

value.getColumnLatestCell(Bytes.toBytes("page"),Bytes.toBytes("i"))。

通過一個數(shù)組配對其中的鍵值對:

Arrays.copyOfRange(cell.getValueArray(),

cell.getValueOffset(),

cell.getValueArray().length);

Stringflag=Bytes.toString(b);

1.5這里使用writable接口格式做大數(shù)據(jù)數(shù)據(jù)類型改寫,writable接口簡介;

Writable接口,是根據(jù)DataInput和DataOutput實現(xiàn)的簡單、有效的序列化對象。MR的任意Key和Value必須實現(xiàn)Writable接口.簡單來說要實現(xiàn)MapReduce的序列化,所需要的數(shù)據(jù)必須有一定的格式,因此需要通過改變數(shù)據(jù)的鍵值對來實現(xiàn)此接口方便我們接下來轉換數(shù)據(jù)。

2集群搭建

在這里選擇3.0.3的hadoop。此處使用linux命令

(1)解壓文件到/opt下

sudotar-zxvfjdk-8u91-linux-x64.tar.gz-C/opt

sudotar-xvfhadoop-3.0.3.tar-C/opt

(2)建立軟連接

cd/opt

sudoln-shadoop-3.0.3hadoop

sudoln-sjdk1.8.0_91jdk

(3)設置環(huán)境變量

cd進入目錄

sudovi~/.profile或者sudovi~/.bashrc

(4)進入hadoop的安裝目錄配置文件中

cd/opt/hadoop/etc/hadoop

假設沒有找到core-site.xml,找到core-site.xml.template

sudocpcore-siter.xml.templatecore-site.xml

修改core-site.xml

sudovicore-site.xml

內容如下:

fs.defaultFS

hdfs://192.168.213.128:9000

(5)修改mapred-site.xml使用sudovimapred-site.xml命令進入此xml文件之中。

(6)確認YARN集群的模式,如圖1.1所示:

(7)MapReduce的具體內容實現(xiàn)地址,如圖1.2所示:

(8)MapReduce內map函數(shù)的具體內容實現(xiàn)地址,如圖1.3所示:

(9)MapReduce內reduce函數(shù)的具體內容實現(xiàn)的地址,如圖1.4所示:

(10)修改yarn-site.xml

修改YARN集群IP地址,如圖1.5所示:

3集群設置

3.1集群權限

(1)hdfs目錄下的所屬子目錄所屬用戶hdfs,所屬組hadoop及其子文件也設置

sudochown-Rhdfshdfs;sudochgrp-Rhadoophdfs;設置權限保證創(chuàng)建文件時系統(tǒng)不會組織,linux的系統(tǒng)由于其特殊的權限特性保證了其安全性。

(2)yarn的所屬組hadoop及其子文件

sudochown-Ryarnyarn;sudochgrp-Rhadoopyarn;同理yarn集群也需要相同的操作。

(3)進入/data目錄,給hadoop目錄及所有子目錄或文件賦予權限777sudochmod777-Rhadoop,這里在創(chuàng)建文件夾帶有最高權限可以方便查詢日志及創(chuàng)建文件夾。

(4)建立yarn和hdfs執(zhí)行所用到的目錄sudomkdir/data;這里是數(shù)據(jù)落地的地方。

(5)在data目錄下建立hadoop文件sudomkdirhadoop子目錄用來分批量存儲數(shù)據(jù)

(6)在hadoop中建立hdfs和yarn文件夾sudomkdirhdfsyarn;這里是最終落地的目錄。

(7)在hdfs文件下建立的dn,nn,snn文件夾sudomkdirdnnnsnn;三個文件夾存儲不同種類的數(shù)據(jù)。

(8)在yarn下建立logs,nm文件夾sudomkdirlogsnm;這里存儲日志文件和日志采集。

3.2配置一鍵啟動功能

一鍵啟動是在主節(jié)點一個命令啟動HDFS和YARN集群。

(1)主節(jié)點安裝ssh服務。

(2)解決無密碼登陸的問題在主節(jié)點之中生成銘文和密文,的兩個屬性需要在hdfs用戶下和yarn用戶下各執(zhí)行一次。

ssh-keygen-trsa-P''-f~/.ssh/id_rsa

(3)將銘文拷貝到從節(jié)點的需要無密碼登陸的機器上去。

使用命令:ssh-copy-id-i:192.168.43.204

3.3驗證無密碼登錄

(1)使用命令:ssh-copy-id-ilocalhost,ssh192.168.43.204。

(2)Hbase的安裝與配置

①重命名目錄文件夾

②配置Hbase的環(huán)境變量

這里更改path和添加HbaseHome作為Hbase的路徑和程序地址。

(3)修改配置文件hbase-env.sh。

4修改配置

(1)在這里修改hbase.Rootdirhbase的根目錄需要在這里被固定下來。

(2)修改hbase.Unsafe.stream.capability.enforce這里安全空間是否需要被開啟,選擇不開啟,可以充分利用內存。

(3)修改cluster的權限:這里選擇分組確認,選項設置為true。改變分組可以提高zookeeper的數(shù)據(jù)采集能力。

(4)修改quorum的屬性,這里設置為單個端口。

(5)修改分區(qū)端口號的屬性,這里用作備份,冗余數(shù)據(jù)可以通過此端口被查詢到,這里設置為16030。

(6)設置主節(jié)點的日志級別info的端口號,這里設置為16010。

(7)開啟文件保護系統(tǒng)在hbase.wal.provider中選擇filesystem。

在出現(xiàn)未知故障的時候,比如突然斷電的時候選擇此項可以開啟zookeeper保護模式,保護已經(jīng)采集到的日志。

(8)啟動hbase,通過jps命令可以查詢到兩個已經(jīng)開啟的命令。主節(jié)點可以查詢到HMaster,從節(jié)點可以查詢到HRegionServer。

5MapReduce的編寫

5.1map的模塊編寫

首先將天氣的年份,溫度,濕度,風力等值作為權重放入到mapper之中。在這里元數(shù)據(jù)的鍵值要改變?yōu)樾枨笄覍逆I值對。使用substring方法可以將固定權重提取。最后將提取出的數(shù)據(jù)通過一定的順序拼接在一起。代碼實現(xiàn)如下:

staticclassTMextendsMapper{

@Override

protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException

以上是創(chuàng)建一個map函數(shù)用來將已經(jīng)提取好的json格式的數(shù)據(jù)做成二次篩查,放入到mapper里面進行操作。

Stringtemp=value.toString();

Strings1=temp.substring(0,15);//城市天氣

Stringyear=temp.substring(15,19);//年份

Stringtem=temp.substring(87,92);//溫度

Stringval=temp.substring(92,93);//【01459】

在這里將所要的數(shù)據(jù)通過權重比較的方式,分批進入mapper中。

if(!"+9999".equals(tem)&&"01459".contains(val))

context.write(newText("城市編號:"+s1+"年份:"+year),newText(temp));

在這里拼接數(shù)據(jù),變成城市編號加年份的方式,分批處理好元數(shù)據(jù)。

5.2使用reduce方式進行操作

創(chuàng)建reduce程序,使用writable接口和迭代器進行操作

staticclassTRextendsReducer{

@Override

protectedvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{

第一步將年份的數(shù)據(jù)放到reduce之中

Texttext=key;//年份

使用treemap方法采集數(shù)據(jù)

Mapyt=newTreeMap<>();

將所得數(shù)據(jù)中“:”的部分后面分割出來提取

String[]year_tem=values.toString().split(":");

下面的邏輯是通過ifelse循環(huán)分別拿出編號為0和1的不同年份的天氣

if(year_tem.length>0&&year_tem!=null){

if(yt.containsKey(year_tem[0])){

if(yt.get(year_tem[0])

yt.put(year_tem[0],Integer.parseInt(year_tem[1]));}

}

else{yt.put(year_tem[0],Integer.parseInt(year_tem[1]));}

}

同理將上述的程序中[]數(shù)組中的序號更改之后就可以得到剩下所需不同元素的天氣的值,此處代碼相近,省略展示。

5.3構建job作業(yè)提交

(1)job提交簡介,job的工作就是和集群建立連接,創(chuàng)建一個yarnRunner的對象調用job.Submit的方法提交,然后確定job的狀態(tài)和這個對象通信。所以總體來說,構建job就是作為連接通道的橋梁。

(2)job提交代碼實現(xiàn),每一個提交的類都有其共同的方法,這里每當提交之后可以將job的方法拷貝到每一個mapper和reducer中去。這里將拷貝到input和output中以便使用。重點的是,這里需要重寫其中的run方法并且構建作業(yè)的時候要重命名class文件,下面是代碼說明。構建一個conf方法的采集器,這里將input和output首先構建出對象。

(3)在job提交中,此設計使用了getInstance,setJarByClass,setJobName,setNumReduceTasks四個方法作為前置提交,這四個方法分別提交數(shù)據(jù)屬性,具體的類,數(shù)據(jù)具體的名稱還有此數(shù)據(jù)在整個hbase中行鍵的序號。最后一個屬性是用來方便定義這個值。

(4)第二個階段,這里的mapper和reducer方法需要連同第一階段的已提交的數(shù)據(jù)的類一起進行第二步的提交。在這里需要用到setMapperClass以及他一系列的衍生方法。用來將mapper的鍵值對傳遞到reducer的鍵值對之中去。之后,reuducer的鍵值對會進行再一次傳輸?shù)娜蝿铡?/p>

最后生成的reducer程序會使用輸入流生成文件,這里會設定input和output輸入輸出的路徑,將生成的文件傳輸?shù)竭@個路徑中去。在這里可能會有等待的問題出現(xiàn),在這里由于提前開啟了線程,因此將等待改為false,關閉即可。

5.4基于年份進行分組排序

上一步將job提交的文件已經(jīng)寫入到指定路徑中,之后將已寫入的文件進行分組排序,這里分組排序的方法是使用compareto方法。篩選條件可以使用之前已有的條件。包括但不限于風力,天氣等元素進行分組排序。代碼展示如下:

intn=this.year-o.getYear();

returnn;

if(n!=0)returnn;

returnthis.stationid.compareTo(o.getStationid());

5.5檢測獲取的溫度是否合理。

(1)當分組排序之后,有一些問可能會超過正常溫度的閾值,上述的一些環(huán)節(jié)雖然有經(jīng)過一些列的篩查,但是只用到單獨的某個條件進行歸類,而在數(shù)據(jù)可靠性上不能得到保證,因此需要使用特定函數(shù)方法檢測溫度合理性。在這里使用ifelse循環(huán)做一個篩查。這里定義一個對象isValiadTemperture意為溫度是否合理。

(2)權重值說明:

(15,19)年份

(87,92)檢查到的溫度,如果為+9999則表示沒有檢測到溫度

(92,93)溫度數(shù)據(jù)質量,為【01459】表示該溫度是合理溫度

(3)代碼如下:

publicvoidparser(Stringstr){

if(str.length()<93){isValiadTemperture=false;return;}

this.stationid=str.substring(0,15);

this.year=Integer.parseInt(str.substring(15,19));

if(str.charAt(87)=='+'){

this.temp=Integer.parseInt(str.substring(88,92));

}else{

this.temp=Integer.parseInt(str.substring(87,92));

}

Stringquality=str.substring(92,93);

if(temp!=MISS&&quality.matches("[01459]")){

this.isValiadTemperture=true;

}else{

this.isValiadTemperture=false;

}

(4)將溫度寫入HDFS系統(tǒng)中進入數(shù)據(jù)庫。

Hdfs高吞吐量的特性可以幫助數(shù)據(jù)快速進入到到數(shù)據(jù)庫之中作為實時存儲,通過上一章寫的定時分析模塊,可以做到一段時間內獲取所需要的數(shù)據(jù),做到精準分析。而數(shù)據(jù)庫的操作命令相對簡單,也可以很好的實現(xiàn)增刪改查的功能,實時數(shù)據(jù)分析,完成天氣系統(tǒng)的設計。

參考文獻:

[1]唐果星.淺析氣候大數(shù)據(jù)在行業(yè)中的發(fā)展趨勢[J].電腦知識與技術,2019,15(10):262-263.

[2]胡欣濱.基于大數(shù)據(jù)環(huán)境下的氣候數(shù)據(jù)分析[J].科技創(chuàng)新導報,2013(12).79-79.

[3]劉喆玥.我國氣候大數(shù)據(jù)的發(fā)展趨勢研究[J].電腦知識與技術,2019,34(21).

[4]楊巨龍.大數(shù)據(jù)技術全解:基礎、設計、開發(fā)與實踐[J].中國信息化,2014,000(006):71-71.

[5]李天目,韓進.云計算技術架構與實踐[M].北京:清華大學出版社,2014.

[6]周品.Hadoop云計算實戰(zhàn)[M].北京:清華大學出版社,2012.

[7]陳強.精通JAVA開發(fā)技術:由淺入深領會高效開發(fā)之道[M].北京:清華大學出版社,2013.

[8]劉志成.Java程序設計案例教程[M].北京:清華大學出版社,2006.

[9]王鵬.云計算與大數(shù)據(jù)技術[M].北京:人民郵電出版社,2014.

猜你喜歡
大數(shù)據(jù)計算機
計算機操作系統(tǒng)
穿裙子的“計算機”
基于計算機自然語言處理的機器翻譯技術應用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
計算機多媒體技術應用初探
科技傳播(2019年22期)2020-01-14 03:06:30
信息系統(tǒng)審計中計算機審計的應用
消費導刊(2017年20期)2018-01-03 06:26:40
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數(shù)據(jù)背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數(shù)據(jù)+輿情:南方報業(yè)創(chuàng)新轉型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
Fresnel衍射的計算機模擬演示
主站蜘蛛池模板: 亚洲AV电影不卡在线观看| 国产精品大尺度尺度视频| 性69交片免费看| 中字无码av在线电影| 香蕉eeww99国产在线观看| a毛片在线免费观看| 97视频在线精品国自产拍| 真人高潮娇喘嗯啊在线观看| 国产人成乱码视频免费观看| 亚洲人妖在线| 欧美精品成人一区二区在线观看| 人妻一区二区三区无码精品一区| 超碰91免费人妻| 亚洲最大综合网| 成人毛片在线播放| 中文天堂在线视频| 99国产在线视频| 成人午夜天| 国产靠逼视频| 欧美综合激情| 国产亚洲欧美在线人成aaaa| 国产九九精品视频| 欧美一区二区三区国产精品| 一级成人a毛片免费播放| 亚洲第一成年免费网站| 91小视频在线| 婷婷五月在线| 在线免费a视频| 国产成年女人特黄特色毛片免 | 亚洲天堂网站在线| 国产91导航| 91无码人妻精品一区| 久久精品中文字幕少妇| 国产伦精品一区二区三区视频优播 | 国产精品护士| 天天躁狠狠躁| 色婷婷综合激情视频免费看| 国产乱人激情H在线观看| 亚洲成人福利网站| 色悠久久久| 国产精品流白浆在线观看| 亚洲第一区在线| 亚洲国产成人在线| 色综合成人| 老色鬼欧美精品| 日韩无码黄色| 啦啦啦网站在线观看a毛片| 国产乱子伦精品视频| 找国产毛片看| 精品无码一区二区三区电影| 99尹人香蕉国产免费天天拍| 中国一级特黄视频| 国产福利拍拍拍| 亚洲天堂2014| 国产日韩久久久久无码精品| 国产免费羞羞视频| 毛片a级毛片免费观看免下载| m男亚洲一区中文字幕| 直接黄91麻豆网站| 亚洲欧美国产五月天综合| 在线免费亚洲无码视频| 91在线激情在线观看| 91精品啪在线观看国产91九色| 日韩视频精品在线| 亚洲精品图区| www.91中文字幕| 日韩不卡免费视频| 久久精品视频一| 狼友av永久网站免费观看| 亚洲精品视频免费看| 欧美成人精品一级在线观看| 真实国产乱子伦高清| 2021天堂在线亚洲精品专区| 成人国产精品网站在线看| 国产网友愉拍精品| 精品综合久久久久久97| 草草线在成年免费视频2| 免费毛片全部不收费的| 欧美日本在线观看| 免费A∨中文乱码专区| 国产日韩欧美成人| 黄色网页在线播放|