海信HDp2902G行管故障維修(海信hdp2902h電路圖)
前沿拓展:
《大數(shù)據(jù)和人工智能交流》號(hào)向廣大初學(xué)者新增C 、Java 、Python 、Scala、javascript 等目前流行的計(jì)算機(jī)、大數(shù)據(jù)編程語言,希望大家以后關(guān)注本號(hào)更多的內(nèi)容。《大數(shù)據(jù)和人工智能》號(hào)方便有基礎(chǔ)讀者的同時(shí)照顧廣大沒入門的初學(xué)者。
和大數(shù)據(jù)相關(guān)文章的鏈接:
1、Linux操作系統(tǒng)課程詳細(xì)整理(命令、shell編程、軟件安裝等)
2、大數(shù)據(jù)的采集與預(yù)處理(Sqoop/Flume/Kafka)詳細(xì)總結(jié)
3、hadoop分布式計(jì)算MapReduce詳細(xì)總結(jié)
4、大數(shù)據(jù)內(nèi)存計(jì)算Spark框架原理詳細(xì)整理
5、大數(shù)據(jù)內(nèi)存計(jì)算框架SparkSQL詳細(xì)整理
6、大數(shù)據(jù)框架Spark的流處理SparkStreaming詳細(xì)總結(jié)
(一)大數(shù)據(jù)采集與預(yù)處理概述
21世紀(jì)是數(shù)據(jù)信息大發(fā)展的時(shí)代,移動(dòng)互聯(lián)、社交網(wǎng)絡(luò)、電子商務(wù)等極大拓展了互聯(lián)網(wǎng)的邊界和應(yīng)用范圍,各種數(shù)據(jù)正在迅速膨脹并變大。杰姆·格雷(Jim Gray)提出著名的&34;新摩爾定律&34;,即人類有史以來的數(shù)據(jù)總量,每過18個(gè)月就會(huì)翻一番。
大數(shù)據(jù)的數(shù)據(jù)量究竟有多大?
互聯(lián)網(wǎng)每天產(chǎn)生的全部內(nèi)容可以刻滿6.4億張DVD;全球每秒發(fā)送290萬封電子郵件,一分鐘讀一篇的話,足夠一個(gè)人晝夜不停地讀5.5年;Google每天需要處理24PB的數(shù)據(jù);每天會(huì)有2.88萬個(gè)小時(shí)的視頻上傳到Y(jié)ouTube,足夠一個(gè)人晝夜不停地觀看3.3年;網(wǎng)民每天在Facebook上要花費(fèi)234億分鐘,被移動(dòng)互聯(lián)網(wǎng)使用者發(fā)送和接收的數(shù)據(jù)高達(dá)44PB;Twitter上每天發(fā)布5000萬條消息,假設(shè)10秒就瀏覽一條消息,足夠一個(gè)人晝夜不停地瀏覽16年。隨著人類活動(dòng)的進(jìn)一步擴(kuò)展,數(shù)據(jù)規(guī)模會(huì)急劇膨脹,包括金融、汽車、零售、餐飲、電信、能源、政務(wù)、醫(yī)療、體育、娛樂等在內(nèi)的各行業(yè)累積的數(shù)據(jù)量越來越大,數(shù)據(jù)類型也越來越多、越來越復(fù)雜。
那么對(duì)于這么龐大復(fù)雜的數(shù)據(jù),來源在哪里呢?現(xiàn)列舉如下:
1、按產(chǎn)生數(shù)據(jù)的主體劃分
(1)少量企業(yè)應(yīng)用產(chǎn)生的數(shù)據(jù)
如關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)和數(shù)據(jù)倉庫中的數(shù)據(jù)等。
(2)大量人產(chǎn)生的數(shù)據(jù)
如推特、微博、通信軟件、移動(dòng)通信數(shù)據(jù)、電子商務(wù)在線交易日志數(shù)據(jù)、企業(yè)應(yīng)用的相關(guān)評(píng)論數(shù)據(jù)等。
(3)巨量機(jī)器產(chǎn)生的數(shù)據(jù)
如應(yīng)用服務(wù)器日志、各類傳感器數(shù)據(jù)、圖像和視頻監(jiān)控?cái)?shù)據(jù)、二維碼和條形碼(條碼)掃描數(shù)據(jù)等。
2、按數(shù)據(jù)來源的行業(yè)劃分
(1)以BAT為代表的互聯(lián)網(wǎng)公司
百度公司數(shù)據(jù)總量超過了千PB級(jí)別,阿里巴巴公司保存的數(shù)據(jù)量超過了百PB級(jí)別,擁有90%以上的電商數(shù)據(jù),騰訊公司總存儲(chǔ)數(shù)據(jù)量經(jīng)壓縮處理以后仍然超過了百PB級(jí)別,數(shù)據(jù)量月增加達(dá)到10%。
(2)電信、金融、保險(xiǎn)、電力、石化系統(tǒng)
電信行業(yè)數(shù)據(jù)年度用戶數(shù)據(jù)增長超過10%,金融每年產(chǎn)生的數(shù)據(jù)超過數(shù)十PB,保險(xiǎn)系統(tǒng)的數(shù)據(jù)量也超過了PB級(jí)別,電力與石化方面,僅國家電網(wǎng)采集獲得的數(shù)據(jù)總量就達(dá)到了數(shù)十PB,石油化工領(lǐng)域每年產(chǎn)生和保存下來的數(shù)據(jù)量也將近百PB級(jí)別。
(3)公共安全、醫(yī)療、交通領(lǐng)域
一個(gè)中、大型城市,一個(gè)月的交通卡口記錄數(shù)可以達(dá)到3億條;整個(gè)醫(yī)療衛(wèi)生行業(yè)一年能夠保存下來的數(shù)據(jù)就可達(dá)到數(shù)百PB級(jí)別;航班往返一次產(chǎn)生的數(shù)據(jù)就達(dá)到TB級(jí)別;列車、水陸路運(yùn)輸產(chǎn)生的各種視頻、文本類數(shù)據(jù),每年保存下來的也達(dá)到數(shù)十PB。
(4)氣象、地理、政務(wù)等領(lǐng)域
中國氣象局保存的數(shù)據(jù)將近10PB,每年約增數(shù)百TB;各種地圖和地理位置信息每年約數(shù)十PB;政務(wù)數(shù)據(jù)則涵蓋了旅游、教育、交通、醫(yī)療等多個(gè)門類,且多為結(jié)構(gòu)化數(shù)據(jù)。
(5)制造業(yè)和其他傳統(tǒng)行業(yè)
制造業(yè)的大數(shù)據(jù)類型以產(chǎn)品設(shè)計(jì)數(shù)據(jù)、企業(yè)生產(chǎn)環(huán)節(jié)的業(yè)務(wù)數(shù)據(jù)和生產(chǎn)監(jiān)控?cái)?shù)據(jù)為主。其中產(chǎn)品設(shè)計(jì)數(shù)據(jù)以文件為主,非結(jié)構(gòu)化,共享要求較高,保存時(shí)間較長;企業(yè)生產(chǎn)環(huán)節(jié)的業(yè)務(wù)數(shù)據(jù)主要是數(shù)據(jù)庫結(jié)構(gòu)化數(shù)據(jù),而生產(chǎn)監(jiān)控?cái)?shù)據(jù)則數(shù)據(jù)量非常大。在其他傳統(tǒng)行業(yè),雖然線下商業(yè)銷售、農(nóng)林牧漁業(yè)、線下餐飲、食品、科研、物流運(yùn)輸?shù)刃袠I(yè)數(shù)據(jù)量劇增,但是數(shù)據(jù)量還處于積累期,整體體量都不算大,多則達(dá)到PB級(jí)別,少則數(shù)十TB或數(shù)百TB級(jí)別。
3、按數(shù)據(jù)存儲(chǔ)的形式劃分
大數(shù)據(jù)不僅僅體現(xiàn)在數(shù)據(jù)量大,還體現(xiàn)在數(shù)據(jù)類型多。如此海量的數(shù)據(jù)中,僅有20%左右屬于結(jié)構(gòu)化的數(shù)據(jù),80%的數(shù)據(jù)屬于廣泛存在于社交網(wǎng)絡(luò)、物聯(lián)網(wǎng)、電子商務(wù)等領(lǐng)域的非結(jié)構(gòu)化數(shù)據(jù)。
對(duì)于上述龐大的數(shù)據(jù)來源,大數(shù)據(jù)的處理流程的第一步就是大數(shù)據(jù)的采集與預(yù)處理。大數(shù)據(jù)采集是指通過RFID射頻數(shù)據(jù)、傳感器數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)、移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)等方式獲得各種類型的結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化的海量數(shù)據(jù)。大數(shù)據(jù)的采集通常采用多個(gè)數(shù)據(jù)庫、云端、hadoop的HDFS存儲(chǔ)等大數(shù)據(jù)存儲(chǔ)體來接收終端數(shù)據(jù),包括智能硬件端、多種傳感器端、網(wǎng)頁端、移動(dòng)APP應(yīng)用端等,并且可以使用數(shù)據(jù)庫進(jìn)行簡單的處理工作。
下面列舉下大數(shù)據(jù)采集的途徑:
(1)系統(tǒng)日志采集
可以使用海量數(shù)據(jù)采集工具,用于系統(tǒng)日志采集,如Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe等,這些工具均采用分布式架構(gòu),能滿足大數(shù)據(jù)的日志數(shù)據(jù)采集和傳輸需求。
(2)互聯(lián)網(wǎng)數(shù)據(jù)采集
通過網(wǎng)絡(luò)爬蟲或網(wǎng)站公開API等方式從網(wǎng)站上獲取數(shù)據(jù)信息,該方法可以數(shù)據(jù)從網(wǎng)頁中抽取出來,將其存儲(chǔ)為統(tǒng)一的本地?cái)?shù)據(jù)文件,它支持圖片、音頻、視頻等文件或附件的采集,附件與正文可以自動(dòng)關(guān)聯(lián)。除了網(wǎng)站中包含的內(nèi)容之外,還可以使用DPI或DFI等帶寬管理技術(shù)實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量的采集。
(3)APP移動(dòng)端數(shù)據(jù)采集
APP是獲取用戶移動(dòng)端數(shù)據(jù)的一種有效方法,APP中的SDK插件可以將用戶使用APP的信息匯總給指定服務(wù)器,即便用戶在沒有訪問時(shí),也能獲知用戶終端的相關(guān)信息,包括安裝應(yīng)用的數(shù)量和類型等。單個(gè)APP用戶規(guī)模有限,數(shù)據(jù)量有限;但數(shù)十萬APP用戶,獲取的用戶終端數(shù)據(jù)和部分行為數(shù)據(jù)也會(huì)達(dá)到數(shù)億的量級(jí)。
(4)與數(shù)據(jù)服務(wù)機(jī)構(gòu)進(jìn)行合作
數(shù)據(jù)服務(wù)機(jī)構(gòu)通常具備規(guī)范的數(shù)據(jù)共享和交易渠道,人們可以在平臺(tái)上快速、明確地獲取自己所需要的數(shù)據(jù)。而對(duì)于企業(yè)生產(chǎn)經(jīng)營數(shù)據(jù)或?qū)W科研究數(shù)據(jù)等保密性要求較高的數(shù)據(jù),也可以通過與企業(yè)或研究機(jī)構(gòu)合作,使用特定系統(tǒng)接口等相關(guān)方式采集數(shù)據(jù)。
(5)大企業(yè)基礎(chǔ)支撐平臺(tái)
提供大數(shù)據(jù)服務(wù)平臺(tái)所需的虛擬服務(wù)器,結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫及物聯(lián)網(wǎng)絡(luò)資源等基礎(chǔ)支撐環(huán)境。重點(diǎn)要解決分布式虛擬存儲(chǔ)技術(shù),大數(shù)據(jù)獲取、存儲(chǔ)、組織、分析和決策操作的可視化接口技術(shù),大數(shù)據(jù)的網(wǎng)絡(luò)傳輸與壓縮技術(shù),大數(shù)據(jù)隱私保護(hù)技術(shù)等。
(6)智能感知設(shè)備
包括數(shù)據(jù)傳感體系、網(wǎng)絡(luò)通信體系、傳感適配體系、智能識(shí)別體系及軟硬件資源接入系統(tǒng),實(shí)現(xiàn)對(duì)結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化的海量數(shù)據(jù)的智能化識(shí)別、定位、跟蹤、接入、傳輸、信號(hào)轉(zhuǎn)換、監(jiān)控、初步處理和管理等。涉及有針對(duì)大數(shù)據(jù)源的智能識(shí)別、感知、適配、傳輸、接入等技術(shù)。隨著物聯(lián)網(wǎng)技術(shù)、智能設(shè)備的發(fā)展,這種基于傳感器的數(shù)據(jù)采集會(huì)越來越多,相應(yīng)對(duì)于這類的研究和應(yīng)用也會(huì)越來越重要。
大數(shù)據(jù)正帶來一場(chǎng)信息社會(huì)的變革。大量的結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的廣泛應(yīng)用,致使人們需要重新思考已有的IT模式。與此同時(shí),大數(shù)據(jù)將推動(dòng)進(jìn)行又一次基于信息革命的業(yè)務(wù)轉(zhuǎn)型,使社會(huì)能夠借助大數(shù)據(jù)獲取更多的社會(huì)效益和發(fā)展機(jī)會(huì)。龐大的數(shù)據(jù)需要我們進(jìn)行剝離、整理、歸類、建模、分析等操作,通過這些動(dòng)作后,我們開始建立數(shù)據(jù)分析的維度,通過對(duì)不同的維度數(shù)據(jù)進(jìn)行分析,最終才能得到想到的數(shù)據(jù)和信息。
雖然采集端本身有很多數(shù)據(jù)庫,但是如果要對(duì)這些海量數(shù)據(jù)進(jìn)行有效的分析,還是應(yīng)該將這些數(shù)據(jù)導(dǎo)入到一個(gè)集中的大型分布式數(shù)據(jù)庫或者分布式存儲(chǔ)集群當(dāng)中,同時(shí),在導(dǎo)入的基礎(chǔ)上完成數(shù)據(jù)清洗和預(yù)處理工作。也有一些用戶會(huì)在導(dǎo)入時(shí)使用來自Twitter的Storm來對(duì)數(shù)據(jù)進(jìn)行流式計(jì)算,來滿足部分業(yè)務(wù)的實(shí)時(shí)計(jì)算需求。
現(xiàn)實(shí)世界中數(shù)據(jù)大體上都是不完整、不一致的&34;臟&34;數(shù)據(jù),無法直接進(jìn)行數(shù)據(jù)挖掘,或挖掘結(jié)果差強(qiáng)人意,為了提高數(shù)據(jù)挖掘的質(zhì)量,產(chǎn)生了數(shù)據(jù)預(yù)處理技術(shù)。
大數(shù)據(jù)的預(yù)處理過程列舉如下:
(1)對(duì)殘缺數(shù)據(jù)進(jìn)行預(yù)處理
這一類數(shù)據(jù)主要是因?yàn)椴糠中畔⑷笔В绻镜拿Q、客戶的區(qū)域信息、業(yè)務(wù)系統(tǒng)中主表與明細(xì)表不能匹配等數(shù)據(jù)。將這一類數(shù)據(jù)過濾出來,按照缺失的內(nèi)容分別填入對(duì)應(yīng)的文檔信息,并提交給客戶,在規(guī)定時(shí)間內(nèi)補(bǔ)全,才可寫入數(shù)據(jù)倉庫。
(2)對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行預(yù)處理
這一類錯(cuò)誤產(chǎn)生的原因往往是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸入信息后沒有進(jìn)行判斷直接將數(shù)據(jù)寫入后臺(tái)數(shù)據(jù)庫導(dǎo)致的,比如數(shù)值數(shù)據(jù)輸成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面有一個(gè)回車操作、日期格式不正確等。這類數(shù)據(jù)也需要分類,對(duì)于類似于全角字符、數(shù)據(jù)前后有不可見字符問題的只能寫SQL語句查找出來,讓客戶在修正之后抽取。日期格式的錯(cuò)誤會(huì)導(dǎo)致ETL運(yùn)行失敗,需要去業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫用SQL的方式挑出來,修正之后再抽取。
(3)對(duì)重復(fù)的數(shù)據(jù)進(jìn)行預(yù)處理
這一類數(shù)據(jù)多出現(xiàn)在維護(hù)表中,是將重復(fù)數(shù)據(jù)記錄的所有字段導(dǎo)出來,讓客戶確認(rèn)并整理。數(shù)據(jù)清理的方法是通過填寫無效和缺失的值、光滑噪聲的數(shù)據(jù)、識(shí)別或刪除離群點(diǎn)并解決不一致性來&34;清理&34;數(shù)據(jù)。主要是達(dá)到格式標(biāo)準(zhǔn)化、異常數(shù)據(jù)消除、錯(cuò)誤糾正、重復(fù)數(shù)據(jù)的清除等目的。數(shù)據(jù)清理是將數(shù)據(jù)庫中所存數(shù)據(jù)精細(xì)化,去除重復(fù)無用數(shù)據(jù),并使剩余部分的數(shù)據(jù)轉(zhuǎn)化成標(biāo)準(zhǔn)可接受格式的過程。
(4)對(duì)數(shù)據(jù)的不一致性進(jìn)行預(yù)處理
從多數(shù)據(jù)源集成的數(shù)據(jù)語義會(huì)不一樣,可供定義完整性約束用于檢查不一致性,也可通過對(duì)數(shù)據(jù)進(jìn)行分析來發(fā)現(xiàn)他們之間的聯(lián)系,從而保持?jǐn)?shù)據(jù)的一致性。
(5)數(shù)據(jù)特征的選取
將不重要的或不相關(guān)的特征從原有特征中刪除,或者通過對(duì)特征進(jìn)行重組和比較來減少個(gè)數(shù)。其原則是在保留、甚至提高原有判斷能力的同時(shí)減少特征向量的維度。
在大數(shù)據(jù)項(xiàng)目實(shí)戰(zhàn)中,常用的大數(shù)據(jù)采集框架如下:
(1)流數(shù)據(jù)采集kafka框架
Kafka是由Apache軟件基金會(huì)開發(fā)的一個(gè)開源流處理平臺(tái),由Scala和Java編寫。Kafka十分適合采集互聯(lián)網(wǎng)用戶行為數(shù)據(jù)。
(2)數(shù)據(jù)遷移Sqoop框架
Sqoop是一款開源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(如mysql)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(例如 :MySQL )中的數(shù)據(jù)導(dǎo)進(jìn)入到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫中。
(3)日志采集Flume框架
Flume最早是Cloudera提供的日志采集系統(tǒng),目前是Apache下的一個(gè)孵化項(xiàng)目,F(xiàn)lume主要在日志系統(tǒng)采集各類數(shù)據(jù)
(二)大數(shù)據(jù)遷移框架Sqoop
1、Sqoop 概述
基于Hadoop之上的數(shù)據(jù)傳輸工具Sqoop是Apache的頂級(jí)項(xiàng)目,主要用于在Hadoop和關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫、NoSQL系統(tǒng)間傳遞數(shù)據(jù)。通過Sqoop我們可以方便地將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫導(dǎo)入到HDFS、HBase、Hive, 或者將數(shù)據(jù)從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫。
Sqoop是連接傳統(tǒng)關(guān)系型數(shù)據(jù)庫和Hadoop的橋梁,它不需要開發(fā)人員編寫相應(yīng)的MapReduce代碼,只需要編寫簡單的配置腳本即可,大大提升了開發(fā)效率。
通過Sqoop我們可以方便的將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫導(dǎo)入到HDFS、HBase、Hive,或者將數(shù)據(jù)從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫
2、Sqoop的應(yīng)用場(chǎng)景
在工作中,我們經(jīng)常會(huì)遇到下面這樣的場(chǎng)景:
場(chǎng)景一:將關(guān)系型數(shù)據(jù)庫中某張表的數(shù)據(jù)抽取到Hadoop( HDFS/Hive/HBase)上;
場(chǎng)景二:將Hadoop上的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫中。
那么如何解決這兩類問題呢?通常情況下是通過開發(fā)MapReduce來實(shí)現(xiàn)。
導(dǎo)入: MapReduce 輸入為DBInputFormat類型,輸出為TextOutputFormat.
導(dǎo)出: MapReduce 輸入為TextInputFormat類型,輸出為DBOutputFormat.
使用MapReduce處理以上兩個(gè)場(chǎng)景時(shí)存在如下問題:每次都需要編寫MapReduce程序,非常麻煩。在沒有出現(xiàn)Sqoop之前,實(shí)際生產(chǎn)中有很多類似的需求,需要通過編寫MapReduce去實(shí)現(xiàn),然后形成一個(gè)工具,后來慢慢就將該工具代碼整理出一個(gè)框架并逐步完善,最終就有了Sqoop的誕生。Sqoop的導(dǎo)入導(dǎo)出處理流程如下所示:
Sqoop就是將導(dǎo)入或?qū)С雒罘g成 MapReduce 程序來實(shí)現(xiàn) 在翻譯出的 MapReduce 中主要是對(duì) InputFormat 和 OutputFormat 進(jìn)行定制
3、Sqoop的安裝
下載Sqoop
進(jìn)入http://sqoop.apache.org/
進(jìn)入&34;&34;
絕大部分企業(yè)所使用的sqoop的版本都是sqoop1,sqoop1.4.6 或者 sqoop1.4.7 是sqoop1,sqoop1.99.7是 sqoop2,此處使用版本sqoop1.4.6.bin__hadoop2.0.4alpha.tar.gz。
(1)解壓縮
[hadoop@ sqoop]$ tar zxvf sqoop1.4.6.bin__hadoop2.0.4alpha.tar.gz
(2)進(jìn)入到 conf 文件夾,找到 sqoopenvtemplate.sh,修改其名稱為 sqoopenv.sh
[hadoop@sqoop ~]$ cd apps/
[hadoop@sqoop apps]$ ls
apachehive2.3.3bin hadoop2.7.5 hbase1.2.6 sqoop1.4.6.bin__hadoop2.0.4alpha zookeeper3.4.10
[hadoop@sqoop apps]$ mv sqoop1.4.6.bin__hadoop2.0.4alpha/ sqoop1.4.6
[hadoop@sqoop apps]$ cd sqoop1.4.6/conf/
[hadoop@sqoop conf]$ ls
oraoopsitetemplate.xml sqoopenvtemplate.sh sqoopsite.xml
sqoopenvtemplate.cmd sqoopsitetemplate.xml
[hadoop@sqoop conf]$ mv sqoopenvtemplate.sh sqoopenv.sh
(3)修改 sqoopenv.sh
export HADOOP_COMMON_HOME=/home/hadoop/apps/hadoop2.7.5
Set path to where hadoopcore.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/apps/hadoop2.7.5
(4)加入 mysql 驅(qū)動(dòng)包到 sqoop1.4.6/lib 目錄下
[hadoop@sqoop ]$ cp mysqlconnectorjava5.1.40bin.jar apps/sqoop1.4.6/lib/
(5)配置系統(tǒng)環(huán)境變量
export SQOOP_HOME=/home/sqoop/apps/sqoop1.4.6
export PATH=$PATH:$SQOOP_HOME/bin
(6)驗(yàn)證安裝是否成功
sqoopversion
4、Sqoop的基本命令
首先,我們可以使用 sqoop help 來查看,sqoop 支持哪些命令
[hadoop@sqoop ~]$ sqoop help
Warning: /home/hadoop/apps/sqoop1.4.6/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/apps/sqoop1.4.6/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/04/12 13:37:19 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
createhivetable Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
importalltables Import tables from a database to HDFS
importmainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
listdatabases List available databases on a server
listtables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
See &39;sqoop help COMMAND&39; for information on a specific command.
(1)列出MySQL數(shù)據(jù)有哪些數(shù)據(jù)庫
[hadoop@sqoop ~]$ sqoop listdatabases \
> connect jdbc:mysql://hadoop1:3306/ \
> username root \
> password root
Warning: /home/hadoop/apps/sqoop1.4.6/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/apps/sqoop1.4.6/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/04/12 13:43:51 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
18/04/12 13:43:51 WARN tool.BaseSqoopTool: Setting your password on the commandline is insecure. Consider using P instead.
18/04/12 13:43:51 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
mysql
performance_schema
test
(2)列出MySQL中的某個(gè)數(shù)據(jù)庫有哪些數(shù)據(jù)表:
[hadoop@hadoop3 ~]$ sqoop listtables \
> connect jdbc:mysql://hadoop1:3306/mysql \
> username root \
> password root
(3)創(chuàng)建一張跟mysql中的help_keyword表一樣的hive表goods:
sqoop createhivetable \
connect jdbc:mysql://192.168.10.100:3306/mysql \
username root \
password root \
table help_keyword \
hivetable goods
5、從RDBMS導(dǎo)入到HDFS中
語法格式:
sqoop import (genericargs) (importargs)
常用參數(shù)
connect <jdbcuri> jdbc 連接地址
connectionmanager <classname> 連接管理者
driver <classname> 驅(qū)動(dòng)類
hadoopmapredhome <dir> $HADOOP_MAPRED_HOME
help help 信息
P 從命令行輸入密碼
password <password> 密碼
username <username> 賬號(hào)
verbose 打印流程信息
connectionparamfile <filename> 可選參數(shù)
示例1:導(dǎo)入mysql庫中的goods的數(shù)據(jù)到HDFS上。導(dǎo)入的默認(rèn)路徑:/goods
sqoop import \
connect jdbc:mysql://hadoop1:3306/mysql \
username root \
password root \
table good \
m 1
示例2: 導(dǎo)入時(shí)指定分隔符和導(dǎo)入路徑
sqoop import \
connect jdbc:mysql://192.168.10.100:3306/mysql \
username root \
password root \
table goods \
targetdir /goods_bak \
fieldsterminatedby &39;\t&39; \
m 2
示例3:導(dǎo)入表數(shù)據(jù)到HDFS
下面的命令用于從MySQL數(shù)據(jù)庫服務(wù)器中的emp表導(dǎo)入HDFS:
bin/sqoop import \
connect jdbc:mysql://hdpnode01:3306/test \
username root \
password root \
table emp \
m 1
6、將數(shù)據(jù)從HDFS文件導(dǎo)出到RDBMS數(shù)據(jù)庫
導(dǎo)出前,目標(biāo)表必須存在于目標(biāo)數(shù)據(jù)庫中。默認(rèn)操作是將文件中的數(shù)據(jù)使用INSERT語句插入到表中。更新模式下,是生成UPDATE語句更新表數(shù)據(jù)。以下是export命令語法:
sqoop export (genericargs) (exportargs)
示例1:數(shù)據(jù)是在HDFS 中&34;EMP/&34;目錄的emp_data文件中。所述emp_data如下:
1201, gopal, manager, 50000, TP
1202, manisha, preader, 50000, TP
1203, kalil, php dev, 30000, AC
1204, prasanth, php dev, 30000, AC
1205, kranthi, admin, 20000, TP
1206, satish p, grp des, 20000, GR
(1)首先需要手動(dòng)創(chuàng)建mysql中的目標(biāo)表
$ mysql
mysql> USE db;
mysql> CREATE TABLE employee (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
deg VARCHAR(20),
salary INT,
dept VARCHAR(10));
(2)然后執(zhí)行導(dǎo)出命令
bin/sqoop export \
connect jdbc:mysql://hdpnode01:3306/test \
username root \
password root \
table employee \
exportdir /user/hadoop/emp/
(3)驗(yàn)證表mysql命令行。
mysql>select from employee;
(三)基于流數(shù)據(jù)采集框架kafka
Kafka是由Apache軟件基金會(huì)開發(fā)的一個(gè)開源流處理平臺(tái),由Scala和Java編寫。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。
1、Kafka的組成結(jié)構(gòu)如下:
2、Kafka的集群組成結(jié)構(gòu)如下:
(1)、Broker
Kafka集群包含一個(gè)或多個(gè)服務(wù)器,這種服務(wù)器被稱為broker
(2)、Topic
每條發(fā)布到Kafka集群的消息都有一個(gè)類別,這個(gè)類別被稱為Topic
(3)、Producer
負(fù)責(zé)發(fā)布消息到Kafka broker
(4)、Consumer
消息消費(fèi)者,向Kafka broker讀取消息的客戶端
(5)、ZooKeeper
ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等
3、使用kafka采集和消費(fèi)數(shù)據(jù)
(1)創(chuàng)建topic
步驟1:創(chuàng)建名為goods的topic
kafkatopics.sh create zookeeper localhost:2181 replicationfactor 1 partitions 1 topic goods
步驟2:查看topic列表
查看kafka中topic的列表,命令如下:
kafkatopics.sh list zookeeper 127.0.0.1:2181
(2)生產(chǎn)者生產(chǎn)數(shù)據(jù)
步驟1: 啟動(dòng)生產(chǎn)者,并向已經(jīng)創(chuàng)建的名為test的topic中發(fā)送數(shù)據(jù)
kafkaconsoleproducer.sh brokerlist localhost:9092 topic goods
步驟2:向goods的topic發(fā)送下列數(shù)據(jù)
U001 lily kafka browse_action
(3)消費(fèi)者消費(fèi)數(shù)據(jù)
步驟1:啟動(dòng)消費(fèi)者,并消費(fèi)名為test的topic中的數(shù)據(jù)
kafkaconsoleconsumer.sh bootstrapserver localhost:9092 topic goods frombeginning
步驟2:消費(fèi)者消費(fèi)數(shù)據(jù)
U001 lily kafka browse_action
(四)日志采集工具Flume
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。
當(dāng)前Flume有兩個(gè)版本Flume 0.9X版本的統(tǒng)稱Flumeog,F(xiàn)lume1.X版本的統(tǒng)稱Flumeng。由于Flumeng經(jīng)過重大重構(gòu),與Flumeog有很大不同,使用時(shí)請(qǐng)注意區(qū)分。
Flume提供對(duì)數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力 。Flume提供了從console(控制臺(tái))、RPC(ThriftRPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系統(tǒng)),支持TCP和UDP等2種模式,exec(命令執(zhí)行)等數(shù)據(jù)源上收集數(shù)據(jù)的能力。
Flume的特點(diǎn):
(1)Flume可以高效率的將多個(gè)服務(wù)器采集的日志信息存入HDFS/HBase中
(2)使用Flume可以將從多個(gè)服務(wù)器中獲取的數(shù)據(jù)迅速的移交給Hadoop中
(3)Flume也可以采集規(guī)模龐大的社交數(shù)據(jù),比如Facebook,Twitter,電商網(wǎng)站 如亞馬遜等
(4)支持多種不同的數(shù)據(jù)源
Flume的優(yōu)勢(shì):
(1)Flume可以將應(yīng)用產(chǎn)生的數(shù)據(jù)存儲(chǔ)到任何集中存儲(chǔ)器中,比如DFS,HBase
(2)當(dāng)收集數(shù)據(jù)的速度超過將寫入數(shù)據(jù)的時(shí)候,F(xiàn)lume會(huì)在數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)收集器間做出調(diào)整,保證其能夠在兩者之間提供一共平穩(wěn)的數(shù)據(jù)
(3)Flume的管道是基于事務(wù),保證了數(shù)據(jù)在傳送和接收時(shí)的一致性
(4)Flume是可靠的,容錯(cuò)性高的,可升級(jí)的,易管理的,并且可定制的
Flume是以agent為最小獨(dú)立運(yùn)行單位。單agent由Source、Sink和Channel三大組件構(gòu)成,如下圖:
(1)Source
從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以Flume的event格式傳遞給一個(gè)或者多個(gè)通道channel,Flume提供多種數(shù)據(jù)接收的方式,比如Avro,Thrift,twitter1%等
(2)Channel:
channel是一種短暫的存儲(chǔ)容器,它將從source處接收到的event格式的數(shù)據(jù)緩存起來,直到它們被sinks消費(fèi)掉,它在source和sink間起著橋梁的作用,channel是一個(gè)完整的事務(wù),這一點(diǎn)保證了數(shù)據(jù)在收發(fā)的時(shí)候的一致性. 并且它可以和任意數(shù)量的source和sink鏈接. 支持的類型有: JDBC channel , File System channel , Memort channel等.
(3)sink:
sink將數(shù)據(jù)存儲(chǔ)到集中存儲(chǔ)器比如Hbase和HDFS,它從channals消費(fèi)數(shù)據(jù)(events)并將其傳遞給目標(biāo)地. 目標(biāo)地可能是另一個(gè)sink,也可能HDFS,HBase.
示例:
監(jiān)控一個(gè)文件實(shí)時(shí)采集新的數(shù)據(jù)輸出到控制臺(tái),數(shù)據(jù)日志格式如下:
商品編號(hào),商品名稱,用戶編號(hào),用戶評(píng)價(jià)(單位:星)
日志的樣本數(shù)據(jù)如下:
g001,hadoop,u001,3
g002,spark,u002,4
g003 ,Machine Learning,u003,5
(1)編輯flume配置文件flume.conf
Flume agent config
a1.sources = r1
a1.sinks = k1
a1.channels = c1
Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.port = 6666
a1.sources.r1.host = 10.42.135.101
a1.sources.r1.channels = c1
a1.sources.r1.command=tail F /home/logger.txt
Describe the sink
a1.sinks.k1.type = logger
Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
(2)啟動(dòng)flume agent
利用前面的配置文件啟動(dòng)flume agent,啟動(dòng)命令如下:
flumeng agent conf /home/logger.txt conffile /home/flume.conf name a1 Dflume.root.logger=INFO,console
(3)向logger.txt寫入數(shù)據(jù)測(cè)試agent
用echo命令追加到/home/logger.txt內(nèi)容,向exec.txt 追加內(nèi)容echo &34;hello world&34; >>/home/exec.txt。
《大數(shù)據(jù)和人工智能交流》的宗旨
1、將大數(shù)據(jù)和人工智能的專業(yè)數(shù)學(xué):概率數(shù)理統(tǒng)計(jì)、線性代數(shù)、決策論、優(yōu)化論、博弈論等數(shù)學(xué)模型變得通俗易懂。
2、將大數(shù)據(jù)和人工智能的專業(yè)涉及到的數(shù)據(jù)結(jié)構(gòu)和算法:分類、聚類 、回歸算法、概率等算法變得通俗易懂。
3、最新的高科技動(dòng)態(tài):數(shù)據(jù)采集方面的智能傳感器技術(shù);醫(yī)療大數(shù)據(jù)智能決策分析;物聯(lián)網(wǎng)智慧城市等等。
根據(jù)初學(xué)者需要會(huì)有C語言、Java語言、Python語言、Scala函數(shù)式等目前主流計(jì)算機(jī)語言。
根據(jù)讀者的需要有和人工智能相關(guān)的計(jì)算機(jī)科學(xué)與技術(shù)、電子技術(shù)、芯片技術(shù)等基礎(chǔ)學(xué)科通俗易懂的文章。
拓展知識(shí):
- 1空調(diào)毯(什么是空調(diào)毯?有哪些使用方法?)
- 2索尼電視客服24小時(shí)電話(如何快速聯(lián)系并解決問題)
- 3方太燃?xì)庠?4小時(shí)客服熱線(如何快速聯(lián)系并解決問題)
- 4富新防盜門開鎖(富新防盜門開鎖服務(wù):保護(hù)您家庭安全的首選)
- 5沈陽吸油煙機(jī)維修(如何找到專業(yè)的維修服務(wù))
- 6電視怎么顯示圖像怎么回事啊(電視顯示圖像原理揭秘)
- 7usb轉(zhuǎn)ttl壞了怎么修(USB轉(zhuǎn)TTL壞修法探究)
- 8匯川變頻器報(bào)警故障代碼大全(如何快速解決報(bào)警問題)
- 9天然氣公司投訴電話95158(如何正確使用并有效投訴)
- 10天津有線電視客服電話96596(如何快速找到并聯(lián)系客服)。
-
臺(tái)風(fēng)“蝴蝶”明日或?qū)⒌顷懀A南大部將有大到暴雨
2025-06-12
-
寧德紅日燃?xì)庠罹S修(如何自行解決常見問題)
2025-06-07
-
ws08m360ti故障(WS08M360Ti故障分析及解決辦法)
2025-06-07
-
萬和燃?xì)庠钕ɑ鹁S修(如何自行處理常見故障)
2025-06-07


