寫給大數據開發初學者的話

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

導讀:

第一章:初識Hadoop
第二章:更高效的WordCount
第三章:把別處的數據搞到Hadoop上
第四章:把Hadoop上的數據搞到別處去
第五章:快一點吧,我的SQL
第六章:一夫多妻制
第七章:越來越多的分析任務
第八章:我的數據要實時
第九章:我的數據要對外
第十章:牛逼高大上的機器學習

經常有初學者在博客和QQ問我,自己想往大數據方向發展,該學哪些技術,學習路線是什么樣的,覺得大數據很火,就業很好,薪資很高。。。。。。。如果自己很迷茫,為了這些原因想往大數據方向發展,也可以,那么我就想問一下,你的專業是什么,對于計算機/軟件,你的興趣是什么?是計算機專業,對操作系統、硬件、網絡、服務器感興趣?是軟件專業,對軟件開發、編程、寫代碼感興趣?還是數學、統計學專業,對數據和數字特別感興趣。。
其實這就是想告訴你的大數據的三個發展方向,平臺搭建/優化/運維/監控、大數據開發/設計/架構、數據分析/挖掘。請不要問我哪個容易,哪個前景好,哪個錢多。
先扯一下大數據的4V特征:

  1. 數據量大,TB->PB
  2. 數據類型繁多,結構化、非結構化文本、日志、視頻、圖片、地理位置等;
  3. 商業價值高,但是這種價值需要在海量數據之上,通過數據分析與機器學習更快速的挖掘出來;
  4. 處理時效性高,海量數據的處理需求不再局限在離線計算當中。

?

現如今,正式為了應對大數據的這幾個特點,開源的大數據框架越來越多,越來越強,先列舉一些常見的:
文件存儲:Hadoop HDFS、Tachyon、KFS
離線計算:Hadoop MapReduce、Spark
流式、實時計算:Storm、Spark Streaming、S4、Heron
K-V、NOSQL數據庫:HBase、Redis、MongoDB
資源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分布式協調服務:Zookeeper
集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
數據挖掘、機器學習:Mahout、Spark MLLib
數據同步:Sqoop
任務調度:Oozie
……

?

眼花了吧,上面的有30多種吧,別說精通了,全部都會使用的,估計也沒幾個。
就我個人而言,主要經驗是在第二個方向(開發/設計/架構),且聽聽我的建議吧。

第一章:初識Hadoop

1.1 學會百度與Google

不論遇到什么問題,先試試搜索并自己解決。
Google首選,翻不過去的,就用百度吧。

1.2 參考資料首選官方文檔

特別是對于入門來說,官方文檔永遠是首選文檔。
相信搞這塊的大多是文化人,英文湊合就行,實在看不下去的,請參考第一步。

1.3 先讓Hadoop跑起來

Hadoop可以算是大數據存儲和計算的開山鼻祖,現在大多開源的大數據框架都依賴Hadoop或者與它能很好的兼容。

關于Hadoop,你至少需要搞清楚以下是什么:

  1. Hadoop 1.0、Hadoop 2.0
  2. MapReduce、HDFS
  3. NameNode、DataNode
  4. JobTracker、TaskTracker
  5. Yarn、ResourceManager、NodeManager

自己搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。
建議先使用安裝包命令行安裝,不要使用管理工具安裝。
另外:Hadoop1.0知道它就行了,現在都用Hadoop 2.0.

1.4 試試使用Hadoop

HDFS目錄操作命令;
上傳、下載文件命令;
提交運行MapReduce示例程序;
打開Hadoop WEB界面,查看Job運行狀態,查看Job運行日志。
知道Hadoop的系統日志在哪里。

1.5 你該了解它們的原理了

MapReduce:如何分而治之;
HDFS:數據到底在哪里,什么是副本;
Yarn到底是什么,它能干什么;
NameNode到底在干些什么;
ResourceManager到底在干些什么;

1.6 自己寫一個MapReduce程序

請仿照WordCount例子,自己寫一個(照抄也行)WordCount程序,
打包并提交到Hadoop運行。
你不會Java?Shell、Python都可以,有個東西叫Hadoop Streaming。


如果你認真完成了以上幾步,恭喜你,你的一只腳已經進來了。


?

第二章:更高效的WordCount

2.1 學點SQL吧

你知道數據庫嗎?你會寫SQL嗎?
如果不會,請學點SQL吧。

2.2 SQL版WordCount

在1.6中,你寫(或者抄)的WordCount一共有幾行代碼?
給你看看我的:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;

這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,我這一句就搞定;使用SQL處理分析Hadoop上的數據,方便、高效、易上手、更是趨勢。不論是離線計算還是實時計算,越來越多的大數據處理框架都在積極提供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是數據倉庫工具,而不是數據庫工具呢?有的朋友可能不知道數據倉庫,數據倉庫是邏輯上的概念,底層使用的是數據庫,數據倉庫中的數據有這兩個特點:最全的歷史數據(海量)、相對穩定的;所謂相對穩定,指的是數據倉庫不同于業務系統數據庫,數據經常會被更新,數據一旦進入數據倉庫,很少會被更新和刪除,只會被大量查詢。而Hive,也是具備這兩個特點,因此,Hive適合做海量數據的數據倉庫工具,而不是數據庫工具。

2.4 安裝配置Hive

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

2.5 試試使用Hive

請參考1.1 和 1.2 ,在Hive中創建wordcount表,并運行2.2中的SQL語句。
在Hadoop WEB界面中找到剛才運行的SQL任務。
看SQL查詢結果是否和1.4中MapReduce中的結果一致。

2.6 Hive是怎么工作的

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

2.7 學會Hive的基本命令

創建、刪除表;
加載數據到表;
下載Hive表的數據;
請參考1.2,學習更多關于Hive的語法和命令。


如果你認真完成了以上幾步,恭喜你,你的半條腿已經進來了。


?寫給大數據開發初學者的話

?

寫給大數據開發初學者的話2

?

第三章:把別處的數據搞到Hadoop上

第四章:把Hadoop上的數據搞到別處去

寫給大數據開發初學者的話3

第五章:快一點吧,我的SQL

第六章:一夫多妻制

寫給大數據開發初學者的話4

第七章:越來越多的分析任務

第八章:我的數據要實時

寫給大數據開發初學者的話5

第九章:我的數據要對外

第十章:牛逼高大上的機器學習

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451318.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451318.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451318.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2018年7月份,python上傳自己的包庫到pypi官網的方法

最近pypi官網進行了更新,老的上傳網址作廢了。記錄下上傳到pypi的方法 0、去pypi官網注冊賬號,沒賬號是不可能上傳的,想想也是那不亂套了嗎,注冊后會收到一個郵件需要點擊然后重新登錄 1、目錄就是這樣 ,我要上傳muli…

linux系統C語言學習總結

引言   盡管 C 語言問世已近 30 年,但它的魅力仍未減退。C 語言繼續吸引著眾多的開發者,他們為了編寫、移植或維護應用程序而必須學習新技能。   本文是為了滿足對C語言初學者或想提高自身C語言修為的開發人員的需要而寫的。希望對您的學習和工作有…

redis 刪除操作

Redis 鍵(key) Redis 鍵命令用于管理 redis 的鍵。 語法 Redis 鍵命令的基本語法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 實例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上實例中 DEL 是…

寫給大數據開發初學者的話2

見 : http://lxw1234.com/archives/2016/11/782.htm 如果你已經按照《寫給大數據開發初學者的話》中第一章和第二章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點: 0和Hadoop2.0的區別;MapReduce的原理(還是那個…

Pandas的結構和應用

Pandas處理以下三個數據結構 - 系列(Series)----一維ndarray   特點:帶有標簽,可以使用標簽作為索引,大小不能改變,內部數據可以改變。 屬性:與NumPy類似,多了一個軸標簽axis lables 數據…

JZOJ5857 【NOIP提高組模擬A組2018.9.8】沒有上司的舞會

題目 Description “那么真的有果爾德施坦因這樣一個人?”他問道。 “是啊,有這樣一個人,他還活著。至于在哪里,我就不知道了。” “那么那個密謀——那個組織?這是真的嗎?不是秘密警察的捏造吧?” “不是,這是真的。我們管…

python 中如何判斷list中是否包含某個元素

在python中可以通過in和not in關鍵字來判讀一個list中是否包含一個元素 theList [‘a’,’b’,’c’] if ‘a’ in theList: print ‘a in the list’ if ‘d’ not in theList: print ‘d is not in the list’

時間即財富:創業者浪費精力的八個錯誤

導讀:本文作者Jeff Miller是美食網頁應用Punchfork的創始人,同時也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投資人。作者通過對自己創業初期一些錯誤選擇進行盤點,告訴讀者在創業初期應該學會選擇,因為在創業初…

寫給大數據開發初學者的話3

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 如果你已經按照《寫給大數據開發初學者的話2》中第三章和第四章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識…

十五周二次課

18.6 負載均衡集群介紹 主流開源軟件LVS、keepalived、haproxy、nginx等其中LVS屬于4層(網絡OSI 7層模型),nginx屬于7層,haproxy既可以認為是4層,也可以當做7層使用keepalived的負載均衡功能其實就是lvslvs這種4層的負…

LeetCode--171--Excel表列序號

問題描述: 給定一個Excel表格中的列名稱,返回其相應的列序號。 例如, A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1: 輸入: "A" 輸出: 1示例 2: 輸入: "AB" 輸出: 28示例 3: 輸入: "…

中國歷代王朝大排名

中國自秦以降,一共出過九個大王朝,它們是:秦、漢、晉、隋、唐、宋、元、明、清。另外,還出過五十幾個小王朝,它們是: 三國時的魏、蜀、吳,共三個; [ 轉自鐵血社區 http://bbs.tiexue…

寫給大數據開發初學者的話4

見:http://lxw1234.com/archives/2016/11/795.htm 如果你已經按照《寫給大數據開發初學者的話3》中第五章和第六章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點: 為什么Spark比MapReduce快。使用SparkSQL代替Hive&#xff…

TPS及計算方法

TPS (transaction per second)代表每秒執行的事務數量,可基于測試周期內完成的事務數量計算得出。例如,用戶每分鐘執行6個事務,TPS為6 / 60s 0.10 TPS。同時我們會知道事務的響應時間(或節拍),以此例,60秒完成6個事務…

域名解析服務之DNS查詢類型

在實際應用中DNS查詢主要分為兩種方式查詢:1.遞歸查詢;2.迭代查詢 一般情況下:為了減少資源的消耗,網絡中客戶端與所屬的本地DNS服務器查詢方式通常為遞歸查詢,本地DNS服務器與外部的公共DNS服務器間的查詢方式為迭代查…

MFC Ribbon界面設計

Ribbon是類似于office2007樣式的界面,它替代了傳統的MFC程序里的菜單和工具欄 MFC默認生成的Ribbon功能少,需要我們自己添加一些控件和圖片等元素使界面好看 看下面的一個界面,是VC2010示例里的 看到它與默認Ribbon樣式的區別: 工…

互聯網手機躁動:“周大炮”追逐“雷布斯”

摘要:周鴻祎選擇非自有品牌補貼,可能是看到了小米初期的艱難,也想追求速度,繞開自制手機終端環節。于小米而言,需要解決后續機型承接、持續穩定提升產能;對360而言,需要投入巨量補貼資金&#x…

獲取泛型T的ClassT clazz

在我們搭建框架中往往會用到泛型,我們知道泛型的好處是在編譯的時候檢查類型安全&#xff0c;并且所有的強制轉換都是自動和隱式的&#xff0c;代碼的重用率高 然而有時候<method>的入參并不能直接強制轉換成泛型的類型,比如說下面這段代碼&#xff1a; 很明顯String 類…

寫給大數據開發初學者的話5

見&#xff1a;http://lxw1234.com/archives/2017/01/832.htm 至此&#xff0c;你的大數據平臺底層架構已經成型了&#xff0c;其中包括了數據采集、數據存儲與計算&#xff08;離線和實時&#xff09;、數據同步、任務調度與監控這幾大模塊。接下來是時候考慮如何更好的對外提…

3.spring boot Controller獲取請求參數的值

2019獨角獸企業重金招聘Python工程師標準>>> 1.獲取連接中的參數,使用倒的關鍵詞PathVariable RestController public class HelloController {RequestMapping(value "/hello/{id}",method RequestMethod.GET)public String index(PathVariable("i…