女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大數(shù)據(jù)開發(fā)常用算法 淺談大數(shù)據(jù)開發(fā)初學(xué)路線

ss ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師譚軍 ? 2018-09-26 14:51 ? 次閱讀

本文主要是關(guān)于大數(shù)據(jù)開發(fā)的相關(guān)介紹,并著重對大數(shù)據(jù)開發(fā)的算法運(yùn)算進(jìn)行了詳盡的闡述。

大數(shù)據(jù)

大數(shù)據(jù)(big data),指無法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn)。 [1]

在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大數(shù)據(jù)時(shí)代》 [2] 中大數(shù)據(jù)指不用隨機(jī)分析法(抽樣調(diào)查)這樣捷徑,而采用所有數(shù)據(jù)進(jìn)行分析處理。大數(shù)據(jù)的5V特點(diǎn)(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價(jià)值密度)、Veracity(真實(shí)性)。

大數(shù)據(jù)(big data),指無法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn)。 [1]

在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大數(shù)據(jù)時(shí)代》 [2] 中大數(shù)據(jù)指不用隨機(jī)分析法(抽樣調(diào)查)這樣捷徑,而采用所有數(shù)據(jù)進(jìn)行分析處理。大數(shù)據(jù)的5V特點(diǎn)(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價(jià)值密度)、Veracity(真實(shí)性)。

對于“大數(shù)據(jù)”(Big data)研究機(jī)構(gòu)Gartner給出了這樣的定義。“大數(shù)據(jù)”是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力來適應(yīng)海量、高增長率和多樣化的信息資產(chǎn)。 [1]

麥肯錫全球研究所給出的定義是:一種規(guī)模大到在獲取、存儲(chǔ)、管理、分析方面大大超出了傳統(tǒng)數(shù)據(jù)庫軟件工具能力范圍的數(shù)據(jù)集合,具有海量的數(shù)據(jù)規(guī)模、快速的數(shù)據(jù)流轉(zhuǎn)、多樣的數(shù)據(jù)類型和價(jià)值密度低四大特征。 [4]

大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息,而在于對這些含有意義的數(shù)據(jù)進(jìn)行專業(yè)化處理。換而言之,如果把大數(shù)據(jù)比作一種產(chǎn)業(yè),那么這種產(chǎn)業(yè)實(shí)現(xiàn)盈利的關(guān)鍵,在于提高對數(shù)據(jù)的“加工能力”,通過“加工”實(shí)現(xiàn)數(shù)據(jù)的“增值”。 [5]

從技術(shù)上看,大數(shù)據(jù)與云計(jì)算的關(guān)系就像一枚硬幣的正反面一樣密不可分。大數(shù)據(jù)必然無法用單臺(tái)的計(jì)算機(jī)進(jìn)行處理,必須采用分布式架構(gòu)。它的特色在于對海量數(shù)據(jù)進(jìn)行分布式數(shù)據(jù)挖掘。但它必須依托云計(jì)算的分布式處理、分布式數(shù)據(jù)庫和云存儲(chǔ)、虛擬化技術(shù)。 [2]

隨著云時(shí)代的來臨,大數(shù)據(jù)(Big data)也吸引了越來越多的關(guān)注。分析師團(tuán)隊(duì)認(rèn)為,大數(shù)據(jù)(Big data)通常用來形容一個(gè)公司創(chuàng)造的大量非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù),這些數(shù)據(jù)在下載到關(guān)系型數(shù)據(jù)庫用于分析時(shí)會(huì)花費(fèi)過多時(shí)間和金錢。大數(shù)據(jù)分析常和云計(jì)算聯(lián)系到一起,因?yàn)閷?shí)時(shí)的大型數(shù)據(jù)集分析需要像MapReduce一樣的框架來向數(shù)十、數(shù)百或甚至數(shù)千的電腦分配工作。

大數(shù)據(jù)需要特殊的技術(shù),以有效地處理大量的容忍經(jīng)過時(shí)間內(nèi)的數(shù)據(jù)。適用于大數(shù)據(jù)的技術(shù),包括大規(guī)模并行處理(MPP)數(shù)據(jù)庫、數(shù)據(jù)挖掘、分布式文件系統(tǒng)、分布式數(shù)據(jù)庫、云計(jì)算平臺(tái)、互聯(lián)網(wǎng)和可擴(kuò)展的存儲(chǔ)系統(tǒng)。

最小的基本單位是bit,按順序給出所有單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

它們按照進(jìn)率1024(2的十次方)來計(jì)算:

1 Byte =8 bit

1 KB = 1,024 Bytes = 8192 bit

1 MB = 1,024 KB = 1,048,576 Bytes

1 GB = 1,024 MB = 1,048,576 KB

1 TB = 1,024 GB = 1,048,576 MB

1 PB = 1,024 TB = 1,048,576 GB

1 EB = 1,024 PB = 1,048,576 TB

1 ZB = 1,024 EB = 1,048,576 PB

1 YB = 1,024 ZB = 1,048,576 EB

1 BB = 1,024 YB = 1,048,576 ZB

1 NB = 1,024 BB = 1,048,576 YB

1 DB = 1,024 NB = 1,048,576 BB

全稱:

1 Bit(比特) =Binary Digit

8Bits = 1 Byte(字節(jié))

1,000 Bytes = 1 Kilobyte

1,000Kilobytes = 1 Megabyte

1,000 Megabytes = 1 Gigabyte

1,000 Gigabytes = 1Terabyte

1,000 Terabytes = 1 Petabyte

1,000 Petabytes = 1 Exabyte

1,000Exabytes = 1 Zettabyte

1,000 Zettabytes = 1 Yottabyte

1,000 Yottabytes = 1Brontobyte

1,000 Brontobytes = 1 Geopbyte

特征

容量(Volume):數(shù)據(jù)的大小決定所考慮的數(shù)據(jù)的價(jià)值和潛在的信息; [6]

種類(Variety):數(shù)據(jù)類型的多樣性; [6]

速度(Velocity):指獲得數(shù)據(jù)的速度; [6]

可變性(Variability):妨礙了處理和有效地管理數(shù)據(jù)的過程。 [6]

真實(shí)性(Veracity):數(shù)據(jù)的質(zhì)量 [6]

復(fù)雜性(Complexity):數(shù)據(jù)量巨大,來源多渠道 [6]

價(jià)值(value):合理運(yùn)用大數(shù)據(jù),以低成本創(chuàng)造高價(jià)值

大數(shù)據(jù)開發(fā)常用算法

奧地利符號計(jì)算研究所(Research Institute for Symbolic Computation,簡稱RISC)的Christoph Koutschan博士在自己的頁面上發(fā)布了一篇文章,提到他做了一個(gè)調(diào)查,參與者大多數(shù)是計(jì)算機(jī)科學(xué)家,他請這些科學(xué)家投票選出最重要的算法,以下是這次調(diào)查的結(jié)果,按照英文名稱字母順序排序。

1、A* 搜索算法——圖形搜索算法,從給定起點(diǎn)到給定終點(diǎn)計(jì)算出路徑。其中使用了一種啟發(fā)式的估算,為每個(gè)節(jié)點(diǎn)估算通過該節(jié)點(diǎn)的最佳路徑,并以之為各個(gè)地點(diǎn)排定次序。算法以得到的次序訪問這些節(jié)點(diǎn)。因此,A*搜索算法是最佳優(yōu)先搜索的范例。

2、集束搜索(又名定向搜索,Beam Search)——最佳優(yōu)先搜索算法的優(yōu)化。使用啟發(fā)式函數(shù)評估它檢查的每個(gè)節(jié)點(diǎn)的能力。不過,集束搜索只能在每個(gè)深度中發(fā)現(xiàn)最前面的m個(gè)最符合條件的節(jié)點(diǎn),m是固定數(shù)字——集束的寬度。

3、二分查找(Binary Search)——在線性數(shù)組中找特定值的算法,每個(gè)步驟去掉一半不符合要求的數(shù)據(jù)。

4、分支界定算法(Branch and Bound)——在多種最優(yōu)化問題中尋找特定最優(yōu)化解決方案的算法,特別是針對離散、組合的最優(yōu)化。

5、Buchberger算法——一種數(shù)學(xué)算法,可將其視為針對單變量最大公約數(shù)求解的歐幾里得算法和線性系統(tǒng)中高斯消元法的泛化。

6、數(shù)據(jù)壓縮——采取特定編碼方案,使用更少的字節(jié)數(shù)(或是其他信息承載單元)對信息編碼的過程,又叫來源編碼。

7、Diffie-Hellman密鑰交換算法——一種加密協(xié)議,允許雙方在事先不了解對方的情況下,在不安全的通信信道中,共同建立共享密鑰。該密鑰以后可與一個(gè)對稱密碼一起,加密后續(xù)通訊。

8、Dijkstra算法——針對沒有負(fù)值權(quán)重邊的有向圖,計(jì)算其中的單一起點(diǎn)最短算法。

9、離散微分算法(Discrete differentiation)。

10、動(dòng)態(tài)規(guī)劃算法(Dynamic Programming)——展示互相覆蓋的子問題和最優(yōu)子架構(gòu)算法

11、歐幾里得算法(Euclidean algorithm)——計(jì)算兩個(gè)整數(shù)的最大公約數(shù)。最古老的算法之一,出現(xiàn)在公元前300前歐幾里得的《幾何原本》。

12、期望-最大算法(Expectation-maximization algorithm,又名EM-Training)——在統(tǒng)計(jì)計(jì)算中,期望-最大算法在概率模型中尋找可能性最大的參數(shù)估算值,其中模型依賴于未發(fā)現(xiàn)的潛在變量。EM在兩個(gè)步驟中交替計(jì)算,第一步是計(jì)算期望,利用對隱藏變量的現(xiàn)有估計(jì)值,計(jì)算其最大可能估計(jì)值;第二步是最大化,最大化在第一步上求得的最大可能值來計(jì)算參數(shù)的值。

13、快速傅里葉變換(Fast Fourier transform,F(xiàn)FT)——計(jì)算離散的傅里葉變換(DFT)及其反轉(zhuǎn)。該算法應(yīng)用范圍很廣,從數(shù)字信號處理到解決偏微分方程,到快速計(jì)算大整數(shù)乘積。

14、梯度下降(Gradient descent)——一種數(shù)學(xué)上的最優(yōu)化算法。

15、哈希算法(Hashing)。

16、堆排序(Heaps)。

17、Karatsuba乘法——需要完成上千位整數(shù)的乘法的系統(tǒng)中使用,比如計(jì)算機(jī)代數(shù)系統(tǒng)和大數(shù)程序庫,如果使用長乘法,速度太慢。該算法發(fā)現(xiàn)于1962年。

18、LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格規(guī)約(lattice)基數(shù)為輸入,輸出短正交向量基數(shù)。LLL算法在以下公共密鑰加密方法中有大量使用:背包加密系統(tǒng)(knapsack)、有特定設(shè)置的RSA加密等等。

19、最大流量算法(Maximum flow)——該算法試圖從一個(gè)流量網(wǎng)絡(luò)中找到最大的流。它優(yōu)勢被定義為找到這樣一個(gè)流的值。最大流問題可以看作更復(fù)雜的網(wǎng)絡(luò)流問題的特定情況。最大流與網(wǎng)絡(luò)中的界面有關(guān),這就是最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一個(gè)流網(wǎng)絡(luò)中的最大流。

20、合并排序(Merge Sort)。

21、牛頓法(Newton‘s method)——求非線性方程(組)零點(diǎn)的一種重要的迭代法。

22、Q-learning學(xué)習(xí)算法——這是一種通過學(xué)習(xí)動(dòng)作值函數(shù)(action-value function)完成的強(qiáng)化學(xué)習(xí)算法,函數(shù)采取在給定狀態(tài)的給定動(dòng)作,并計(jì)算出期望的效用價(jià)值,在此后遵循固定的策略。Q-leanring的優(yōu)勢是,在不需要環(huán)境模型的情況下,可以對比可采納行動(dòng)的期望效用。

23、兩次篩法(Quadratic Sieve)——現(xiàn)代整數(shù)因子分解算法,在實(shí)踐中,是目前已知第二快的此類算法(僅次于數(shù)域篩法Number Field Sieve)。對于110位以下的十位整數(shù),它仍是最快的,而且都認(rèn)為它比數(shù)域篩法更簡單。

24、RANSAC——是“RANdom SAmple Consensus”的縮寫。該算法根據(jù)一系列觀察得到的數(shù)據(jù),數(shù)據(jù)中包含異常值,估算一個(gè)數(shù)學(xué)模型的參數(shù)值。其基本假設(shè)是:數(shù)據(jù)包含非異化值,也就是能夠通過某些模型參數(shù)解釋的值,異化值就是那些不符合模型的數(shù)據(jù)點(diǎn)。

25、RSA——公鑰加密算法。首個(gè)適用于以簽名作為加密的算法。RSA在電商行業(yè)中仍大規(guī)模使用,大家也相信它有足夠安全長度的公鑰。

26、Sch?nhage-Strassen算法——在數(shù)學(xué)中,Sch?nhage-Strassen算法是用來完成大整數(shù)的乘法的快速漸近算法。其算法復(fù)雜度為:O(N log(N) log(log(N))),該算法使用了傅里葉變換。

27、單純型算法(Simplex Algorithm)——在數(shù)學(xué)的優(yōu)化理論中,單純型算法是常用的技術(shù),用來找到線性規(guī)劃問題的數(shù)值解。線性規(guī)劃問題包括在一組實(shí)變量上的一系列線性不等式組,以及一個(gè)等待最大化(或最小化)的固定線性函數(shù)。

28、奇異值分解(Singular value decomposition,簡稱SVD)——在線性代數(shù)中,SVD是重要的實(shí)數(shù)或復(fù)數(shù)矩陣的分解方法,在信號處理和統(tǒng)計(jì)中有多種應(yīng)用,比如計(jì)算矩陣的偽逆矩陣(以求解最小二乘法問題)、解決超定線性系統(tǒng)(overdetermined linear systems)、矩陣逼近、數(shù)值天氣預(yù)報(bào)等等。

29、求解線性方程組(Solving a system of linear equations)——線性方程組是數(shù)學(xué)中最古老的問題,它們有很多應(yīng)用,比如在數(shù)字信號處理、線性規(guī)劃中的估算和預(yù)測、數(shù)值分析中的非線性問題逼近等等。求解線性方程組,可以使用高斯—約當(dāng)消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。

30、Strukturtensor算法——應(yīng)用于模式識(shí)別領(lǐng)域,為所有像素找出一種計(jì)算方法,看看該像素是否處于同質(zhì)區(qū)域( homogenous region),看看它是否屬于邊緣,還是是一個(gè)頂點(diǎn)。

31、合并查找算法(Union-find)——給定一組元素,該算法常常用來把這些元素分為多個(gè)分離的、彼此不重合的組。不相交集(disjoint-set)的數(shù)據(jù)結(jié)構(gòu)可以跟蹤這樣的切分方法。合并查找算法可以在此種數(shù)據(jù)結(jié)構(gòu)上完成兩個(gè)有用的操作:

查找:判斷某特定元素屬于哪個(gè)組。

合并:聯(lián)合或合并兩個(gè)組為一個(gè)組。

32、維特比算法(Viterbi algorithm)——尋找隱藏狀態(tài)最有可能序列的動(dòng)態(tài)規(guī)劃算法,這種序列被稱為維特比路徑,其結(jié)果是一系列可以觀察到的事件,特別是在隱藏的Markov模型中。

大數(shù)據(jù)開發(fā)初學(xué)者學(xué)習(xí)路線

1.1 學(xué)會(huì)百度與Google

不論遇到什么問題,先試試搜索并自己解決。

Google首選,翻不過去的,就用百度吧。

1.2 參考資料首選官方文檔

特別是對于入門來說,官方文檔永遠(yuǎn)是首選文檔。

相信搞這塊的大多是文化人,英文湊合就行,實(shí)在看不下去的,請參考第一步。

1.3 先讓Hadoop跑起來

Hadoop可以算是大數(shù)據(jù)存儲(chǔ)和計(jì)算的開山鼻祖,現(xiàn)在大多開源的大數(shù)據(jù)框架都依賴Hadoop或者與它能很好的兼容。

關(guān)于Hadoop,你至少需要搞清楚以下是什么:

Hadoop 1.0、Hadoop 2.0

MapReduce、HDFS

NameNode、DataNode

JobTracker、TaskTracker

Yarn、ResourceManager、NodeManager

自己搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。

建議先使用安裝包命令行安裝,不要使用管理工具安裝。

另外:Hadoop1.0知道它就行了,現(xiàn)在都用Hadoop 2.0.

1.4 試試使用Hadoop

HDFS目錄操作命令;

上傳、下載文件命令;

提交運(yùn)行MapReduce示例程序;

打開Hadoop WEB界面,查看Job運(yùn)行狀態(tài),查看Job運(yùn)行日志。

知道Hadoop的系統(tǒng)日志在哪里。

1.5 你該了解它們的原理了

MapReduce:如何分而治之;

HDFS:數(shù)據(jù)到底在哪里,什么是副本;

Yarn到底是什么,它能干什么;

NameNode到底在干些什么;

ResourceManager到底在干些什么;

1.6 自己寫一個(gè)MapReduce程序

請仿照WordCount例子,自己寫一個(gè)(照抄也行)WordCount程序,

打包并提交到Hadoop運(yùn)行。

你不會(huì)Java?Shell、Python都可以,有個(gè)東西叫Hadoop Streaming。

如果你認(rèn)真完成了以上幾步,恭喜你,你的一只腳已經(jīng)進(jìn)來了。

第二章:更高效的WordCount

2.1 學(xué)點(diǎn)SQL吧

你知道數(shù)據(jù)庫嗎?你會(huì)寫SQL嗎?

如果不會(huì),請學(xué)點(diǎn)SQL吧。

2.2 SQL版WordCount

在1.6中,你寫(或者抄)的WordCount一共有幾行代碼?

給你看看我的:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,我這一句就搞定;使用SQL處理分析Hadoop上的數(shù)據(jù),方便、高效、易上手、更是趨勢。不論是離線計(jì)算還是實(shí)時(shí)計(jì)算,越來越多的大數(shù)據(jù)處理框架都在積極提供SQL接口

2.3 SQL On Hadoop之Hive

什么是Hive?官方給的解釋是:

The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

為什么說Hive是數(shù)據(jù)倉庫工具,而不是數(shù)據(jù)庫工具呢?有的朋友可能不知道數(shù)據(jù)倉庫,數(shù)據(jù)倉庫是邏輯上的概念,底層使用的是數(shù)據(jù)庫,數(shù)據(jù)倉庫中的數(shù)據(jù)有這兩個(gè)特點(diǎn):最全的歷史數(shù)據(jù)(海量)、相對穩(wěn)定的;所謂相對穩(wěn)定,指的是數(shù)據(jù)倉庫不同于業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫,數(shù)據(jù)經(jīng)常會(huì)被更新,數(shù)據(jù)一旦進(jìn)入數(shù)據(jù)倉庫,很少會(huì)被更新和刪除,只會(huì)被大量查詢。而Hive,也是具備這兩個(gè)特點(diǎn),因此,Hive適合做海量數(shù)據(jù)的數(shù)據(jù)倉庫工具,而不是數(shù)據(jù)庫工具。

2.4 安裝配置Hive

請參考1.1 和 1.2 完成Hive的安裝配置。可以正常進(jìn)入Hive命令行。

2.5 試試使用Hive

請參考1.1 和 1.2 ,在Hive中創(chuàng)建wordcount表,并運(yùn)行2.2中的SQL語句。

在Hadoop WEB界面中找到剛才運(yùn)行的SQL任務(wù)。

看SQL查詢結(jié)果是否和1.4中MapReduce中的結(jié)果一致。

2.6 Hive是怎么工作的

明明寫的是SQL,為什么Hadoop WEB界面中看到的是MapReduce任務(wù)?

2.7 學(xué)會(huì)Hive的基本命令

創(chuàng)建、刪除表;

加載數(shù)據(jù)到表;

下載Hive表的數(shù)據(jù);

請參考1.2,學(xué)習(xí)更多關(guān)于Hive的語法和命令。

如果你已經(jīng)按照《寫給大數(shù)據(jù)開發(fā)初學(xué)者的話》中第一章和第二章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):

0和Hadoop2.0的區(qū)別;

MapReduce的原理(還是那個(gè)經(jīng)典的題目,一個(gè)10G大小的文件,給定1G大小的內(nèi)存,如何使用Java程序統(tǒng)計(jì)出現(xiàn)次數(shù)最多的10個(gè)單詞及次數(shù));

HDFS讀寫數(shù)據(jù)的流程;向HDFS中PUT數(shù)據(jù);從HDFS中下載數(shù)據(jù);

自己會(huì)寫簡單的MapReduce程序,運(yùn)行出現(xiàn)問題,知道在哪里查看日志;

會(huì)寫簡單的SELECT、WHERE、GROUP BY等SQL語句;

Hive SQL轉(zhuǎn)換成MapReduce的大致流程;

Hive中常見的語句:創(chuàng)建表、刪除表、往表中加載數(shù)據(jù)、分區(qū)、將表中數(shù)據(jù)下載到本地;

從上面的學(xué)習(xí),你已經(jīng)了解到,HDFS是Hadoop提供的分布式存儲(chǔ)框架,它可以用來存儲(chǔ)海量數(shù)據(jù),MapReduce是Hadoop提供的分布式計(jì)算框架,它可以用來統(tǒng)計(jì)和分析HDFS上的海量數(shù)據(jù),而Hive則是SQL On Hadoop,Hive提供了SQL接口,開發(fā)人員只需要編寫簡單易上手的SQL語句,Hive負(fù)責(zé)把SQL翻譯成MapReduce,提交運(yùn)行。

此時(shí),你的”大數(shù)據(jù)平臺(tái)”是這樣的:

那么問題來了,海量數(shù)據(jù)如何到HDFS上呢?

第三章:把別處的數(shù)據(jù)搞到Hadoop上

此處也可以叫做數(shù)據(jù)采集,把各個(gè)數(shù)據(jù)源的數(shù)據(jù)采集到Hadoop上。

3.1 HDFS PUT命令

這個(gè)在前面你應(yīng)該已經(jīng)使用過了。

put命令在實(shí)際環(huán)境中也比較常用,通常配合shell、python等腳本語言來使用。

建議熟練掌握。

3.2 HDFS API

HDFS提供了寫數(shù)據(jù)的API,自己用編程語言將數(shù)據(jù)寫入HDFS,put命令本身也是使用API。

實(shí)際環(huán)境中一般自己較少編寫程序使用API來寫數(shù)據(jù)到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。

建議了解原理,會(huì)寫Demo。

3.3 Sqoop

Sqoop是一個(gè)主要用于Hadoop/Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫

Oracle/MySQL/SQLServer等之間進(jìn)行數(shù)據(jù)交換的開源框架。

就像Hive把SQL翻譯成MapReduce一樣,Sqoop把你指定的參數(shù)翻譯成MapReduce,提交到Hadoop運(yùn)行,完成Hadoop與其他數(shù)據(jù)庫之間的數(shù)據(jù)交換。

自己下載和配置Sqoop(建議先使用Sqoop1,Sqoop2比較復(fù)雜)。

了解Sqoop常用的配置參數(shù)和方法。

使用Sqoop完成從MySQL同步數(shù)據(jù)到HDFS;

使用Sqoop完成從MySQL同步數(shù)據(jù)到Hive表;

PS:如果后續(xù)選型確定使用Sqoop作為數(shù)據(jù)交換工具,那么建議熟練掌握,否則,了解和會(huì)用Demo即可。

3.4 Flume

Flume是一個(gè)分布式的海量日志采集和傳輸框架,因?yàn)椤安杉蛡鬏斂蚣堋保运⒉贿m合關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)采集和傳輸。

Flume可以實(shí)時(shí)的從網(wǎng)絡(luò)協(xié)議、消息系統(tǒng)、文件系統(tǒng)采集日志,并傳輸?shù)紿DFS上。

因此,如果你的業(yè)務(wù)有這些數(shù)據(jù)源的數(shù)據(jù),并且需要實(shí)時(shí)的采集,那么就應(yīng)該考慮使用Flume。

下載和配置Flume。

使用Flume監(jiān)控一個(gè)不斷追加數(shù)據(jù)的文件,并將數(shù)據(jù)傳輸?shù)紿DFS;

PS:Flume的配置和使用較為復(fù)雜,如果你沒有足夠的興趣和耐心,可以先跳過Flume。

3.5 阿里開源的DataX

之所以介紹這個(gè),是因?yàn)槲覀児灸壳笆褂玫腍adoop與關(guān)系型數(shù)據(jù)庫數(shù)據(jù)交換的工具,就是之前基于DataX開發(fā)的,非常好用。

可以參考我的博文《異構(gòu)數(shù)據(jù)源海量數(shù)據(jù)交換工具-Taobao DataX 下載和使用》。

現(xiàn)在DataX已經(jīng)是3.0版本,支持很多數(shù)據(jù)源。

你也可以在其之上做二次開發(fā)。

PS:有興趣的可以研究和使用一下,對比一下它與Sqoop。

如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺(tái)”應(yīng)該是這樣的:

第四章:把Hadoop上的數(shù)據(jù)搞到別處去

前面介紹了如何把數(shù)據(jù)源的數(shù)據(jù)采集到Hadoop上,數(shù)據(jù)到Hadoop上之后,便可以使用Hive和MapReduce進(jìn)行分析了。那么接下來的問題是,分析完的結(jié)果如何從Hadoop上同步到其他系統(tǒng)和應(yīng)用中去呢?

其實(shí),此處的方法和第三章基本一致的。

4.1 HDFS GET命令

把HDFS上的文件GET到本地。需要熟練掌握。

4.2 HDFS API

同3.2.

4.3 Sqoop

同3.3.

使用Sqoop完成將HDFS上的文件同步到MySQL;

使用Sqoop完成將Hive表中的數(shù)據(jù)同步到MySQL;

4.4 DataX

同3.5.

如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺(tái)”應(yīng)該是這樣的:

如果你已經(jīng)按照《寫給大數(shù)據(jù)開發(fā)初學(xué)者的話2》中第三章和第四章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):

知道如何把已有的數(shù)據(jù)采集到HDFS上,包括離線采集和實(shí)時(shí)采集;

你已經(jīng)知道sqoop(或者還有DataX)是HDFS和其他數(shù)據(jù)源之間的數(shù)據(jù)交換工具;

你已經(jīng)知道flume可以用作實(shí)時(shí)的日志采集。

從前面的學(xué)習(xí),對于大數(shù)據(jù)平臺(tái),你已經(jīng)掌握的不少的知識(shí)和技能,搭建Hadoop集群,把數(shù)據(jù)采集到Hadoop上,使用Hive和MapReduce來分析數(shù)據(jù),把分析結(jié)果同步到其他數(shù)據(jù)源。

接下來的問題來了,Hive使用的越來越多,你會(huì)發(fā)現(xiàn)很多不爽的地方,特別是速度慢,大多情況下,明明我的數(shù)據(jù)量很小,它都要申請資源,啟動(dòng)MapReduce來執(zhí)行。

第五章:快一點(diǎn)吧,我的SQL

其實(shí)大家都已經(jīng)發(fā)現(xiàn)Hive后臺(tái)使用MapReduce作為執(zhí)行引擎,實(shí)在是有點(diǎn)慢。

因此SQL On Hadoop的框架越來越多,按我的了解,最常用的按照流行度依次為SparkSQL、Impala和Presto.

這三種框架基于半內(nèi)存或者全內(nèi)存,提供了SQL接口來快速查詢分析Hadoop上的數(shù)據(jù)。關(guān)于三者的比較,請參考1.1.

我們目前使用的是SparkSQL,至于為什么用SparkSQL,原因大概有以下吧:

使用Spark還做了其他事情,不想引入過多的框架;

Impala對內(nèi)存的需求太大,沒有過多資源部署;

5.1 關(guān)于Spark和SparkSQL

什么是Spark,什么是SparkSQL。

Spark有的核心概念及名詞解釋。

SparkSQL和Spark是什么關(guān)系,SparkSQL和Hive是什么關(guān)系。

SparkSQL為什么比Hive跑的快。

5.2 如何部署和運(yùn)行SparkSQL

Spark有哪些部署模式?

如何在Yarn上運(yùn)行SparkSQL?

使用SparkSQL查詢Hive中的表。

PS: Spark不是一門短時(shí)間內(nèi)就能掌握的技術(shù),因此建議在了解了Spark之后,可以先從SparkSQL入手,循序漸進(jìn)。

關(guān)于Spark和SparkSQL,可參考

http://lxw1234.com/archives/category/spark

如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺(tái)”應(yīng)該是這樣的:

第六章:一夫多妻制

請不要被這個(gè)名字所誘惑。其實(shí)我想說的是數(shù)據(jù)的一次采集、多次消費(fèi)。

在實(shí)際業(yè)務(wù)場景下,特別是對于一些監(jiān)控日志,想即時(shí)的從日志中了解一些指標(biāo)(關(guān)于實(shí)時(shí)計(jì)算,后面章節(jié)會(huì)有介紹),這時(shí)候,從HDFS上分析就太慢了,盡管是通過Flume采集的,但Flume也不能間隔很短就往HDFS上滾動(dòng)文件,這樣會(huì)導(dǎo)致小文件特別多。

為了滿足數(shù)據(jù)的一次采集、多次消費(fèi)的需求,這里要說的便是Kafka。

6.1 關(guān)于Kafka

什么是Kafka?

Kafka的核心概念及名詞解釋。

6.2 如何部署和使用Kafka

使用單機(jī)部署Kafka,并成功運(yùn)行自帶的生產(chǎn)者和消費(fèi)者例子。

使用Java程序自己編寫并運(yùn)行生產(chǎn)者和消費(fèi)者程序。

Flume和Kafka的集成,使用Flume監(jiān)控日志,并將日志數(shù)據(jù)實(shí)時(shí)發(fā)送至Kafka。

如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺(tái)”應(yīng)該是這樣的:

這時(shí),使用Flume采集的數(shù)據(jù),不是直接到HDFS上,而是先到Kafka,Kafka中的數(shù)據(jù)可以由多個(gè)消費(fèi)者同時(shí)消費(fèi),其中一個(gè)消費(fèi)者,就是將數(shù)據(jù)同步到HDFS。

如果你已經(jīng)按照《寫給大數(shù)據(jù)開發(fā)初學(xué)者的話3》中第五章和第六章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):

為什么Spark比MapReduce快。

使用SparkSQL代替Hive,更快的運(yùn)行SQL。

使用Kafka完成數(shù)據(jù)的一次收集,多次消費(fèi)架構(gòu)。

自己可以寫程序完成Kafka的生產(chǎn)者和消費(fèi)者。

從前面的學(xué)習(xí),你已經(jīng)掌握了大數(shù)據(jù)平臺(tái)中的數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)和計(jì)算、數(shù)據(jù)交換等大部分技能,而這其中的每一步,都需要一個(gè)任務(wù)(程序)來完成,各個(gè)任務(wù)之間又存在一定的依賴性,比如,必須等數(shù)據(jù)采集任務(wù)成功完成后,數(shù)據(jù)計(jì)算任務(wù)才能開始運(yùn)行。如果一個(gè)任務(wù)執(zhí)行失敗,需要給開發(fā)運(yùn)維人員發(fā)送告警,同時(shí)需要提供完整的日志來方便查錯(cuò)。

結(jié)語

關(guān)于大數(shù)據(jù)開發(fā)的相關(guān)介紹就到這了,如有不足之處歡迎指正。

相關(guān)閱讀推薦:一文告訴你工廠如何利用大數(shù)據(jù)

相關(guān)閱讀推薦:大數(shù)據(jù)時(shí)代信息保護(hù)遭挑戰(zhàn)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    780

    瀏覽量

    44800
  • 大數(shù)據(jù)
    +關(guān)注

    關(guān)注

    64

    文章

    8949

    瀏覽量

    139449
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    大數(shù)據(jù)技術(shù)經(jīng)驗(yàn)交流 場景化數(shù)據(jù)算法

    可視化數(shù)據(jù)指導(dǎo),讓每一個(gè)人看懂大數(shù)據(jù);多場景數(shù)據(jù)算法,讓所有數(shù)據(jù)都有跡可循;大數(shù)據(jù)技術(shù)經(jīng)驗(yàn)交流群
    發(fā)表于 06-01 17:12

    常用大數(shù)據(jù)處理技術(shù)歸類

    “21世紀(jì)最缺的是什么?人才!”。在大數(shù)據(jù)發(fā)展如此之快的今天,大數(shù)據(jù)工程師已經(jīng)成為一個(gè)新興職業(yè)。大數(shù)據(jù)是信息技術(shù),是人和人、人和機(jī)器、機(jī)器和機(jī)器交互的內(nèi)容特征,是最底層的信息技術(shù),是基本標(biāo)配。今天
    發(fā)表于 02-28 17:02

    如何從零學(xué)大數(shù)據(jù)

    新如何學(xué)習(xí)大數(shù)據(jù)技術(shù)?大數(shù)據(jù)怎么入門?怎么做大數(shù)據(jù)分析?數(shù)據(jù)科學(xué)需要學(xué)習(xí)那些技術(shù)?大數(shù)據(jù)的應(yīng)用前景等等問題,已成為熱門
    發(fā)表于 03-01 15:41

    常見大數(shù)據(jù)應(yīng)用有哪些?

    以及亞馬遜等大型企業(yè)也將大數(shù)據(jù)技術(shù)列為未來發(fā)展的關(guān)鍵籌碼,可見,大數(shù)據(jù)技術(shù)在當(dāng)今乃至未來的重要性!大數(shù)據(jù)技術(shù),簡而言之,就是提取大數(shù)據(jù)價(jià)值的技術(shù),是根據(jù)特定目標(biāo),經(jīng)過
    發(fā)表于 03-13 16:50

    大數(shù)據(jù)運(yùn)用的技術(shù)

    ,是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組件服務(wù)等,在大數(shù)據(jù)開發(fā)中要掌握ZooKeeper的常用命令及功能的實(shí)現(xiàn)方法。7. HBaseHBase是一個(gè)
    發(fā)表于 04-08 16:50

    大數(shù)據(jù)開發(fā)之spark應(yīng)用場景

    Spark是大數(shù)據(jù)技術(shù)中數(shù)據(jù)計(jì)算處理的王者,能夠一次處理PB級的數(shù)據(jù),分布在數(shù)千個(gè)協(xié)作的物理或虛擬服務(wù)器集群中,它有一套廣泛的開發(fā)者庫和API,并且支持Java,Python,R和Sc
    發(fā)表于 04-10 16:05

    大數(shù)據(jù)開發(fā)核心技術(shù)詳解

    數(shù)據(jù)的核心是云技術(shù)和BI。關(guān)于大數(shù)據(jù)和云計(jì)算的關(guān)系人們通常會(huì)有誤解,而且也會(huì)把它們混起來說,分別做一句話直白解釋就是:云計(jì)算就是硬件資源的虛擬化;大數(shù)據(jù)就是海量數(shù)據(jù)的高效處理。如果做一
    發(fā)表于 07-26 16:26

    DKHadoop大數(shù)據(jù)平臺(tái)架構(gòu)詳解

    同樣可以在dkhadoop上高效運(yùn)行。4、DKhadoop一體化開發(fā)框架提供了大數(shù)據(jù)、搜索、自然語言處理和人工智能開發(fā)常用的二十多個(gè)類,總計(jì)一百余種方法,實(shí)現(xiàn)了
    發(fā)表于 10-17 15:12

    DKHadoop大數(shù)據(jù)開發(fā)框架的構(gòu)成模塊

    DKhadoop把大數(shù)據(jù)開發(fā)中的一些通用的,重復(fù)使用的基礎(chǔ)代碼、算法封裝為類庫,在很大程度上降低了開發(fā)的難度。相信這個(gè)對于從事開發(fā)的人員看了
    發(fā)表于 10-19 15:12

    DKhadoop大數(shù)據(jù)平臺(tái)基礎(chǔ)框架方案概述

    也不是特別長。僅以我熟悉的DKhadoop為例給大家分享一些小知識(shí),往對初學(xué)者有點(diǎn)小幫助就可以了。大數(shù)據(jù)平臺(tái)基礎(chǔ)框架是很多初學(xué)者必然要掌握的內(nèi)容,大數(shù)據(jù)太過抽象,有時(shí)候?qū)懛窒淼臅r(shí)候難免
    發(fā)表于 10-31 13:58

    基于hadoop的免費(fèi)大數(shù)據(jù)平臺(tái)有哪些?

    時(shí)期內(nèi)關(guān)于大數(shù)據(jù)應(yīng)用開發(fā)又將進(jìn)入到一個(gè)新的階段。現(xiàn)在市面上圍繞大數(shù)據(jù)的應(yīng)用開發(fā)如火如荼,比如,企業(yè)級大數(shù)據(jù)處理平臺(tái)
    發(fā)表于 11-07 14:10

    大數(shù)據(jù)平臺(tái)開發(fā)公司有哪些?

    大家分享的是只將有真正開發(fā)能力的考慮進(jìn)來,拿別人的大數(shù)據(jù)產(chǎn)品套一層外衣的咱就不考慮它了!雖然說國內(nèi)大數(shù)據(jù)公司很多,但如果從大數(shù)據(jù)底層考慮角度來給這些做
    發(fā)表于 11-15 15:17

    大數(shù)據(jù)應(yīng)用開發(fā)如何入門需要知道這些

    一體化開發(fā)框架——FreeRCH大數(shù)據(jù)一體化開發(fā)框架。這個(gè)大數(shù)據(jù)一體化開發(fā)框架已經(jīng)把大數(shù)據(jù)
    發(fā)表于 11-26 14:49

    零基礎(chǔ)怎么規(guī)劃自己的大數(shù)據(jù)學(xué)習(xí)路線

    零基礎(chǔ)怎么規(guī)劃自己的系統(tǒng)學(xué)習(xí)大數(shù)據(jù)路線呢?
    發(fā)表于 04-23 10:23

    什么是大數(shù)據(jù)大數(shù)據(jù)的特點(diǎn)有哪些

    大數(shù)據(jù)(big data)目錄1什么是大數(shù)據(jù)2大數(shù)據(jù)的定義3大數(shù)據(jù)的特點(diǎn)[1]4大數(shù)據(jù)的作用[2]5大數(shù)
    發(fā)表于 07-12 06:52