1. 程式人生 > >大資料入門之Hadoop基礎學習

大資料入門之Hadoop基礎學習

開發十年,就只剩下這套架構體系了! >>>   

目前人工智慧和大資料火熱,使用的場景也越來越廣,日常開發中前端同學也逐漸接觸了更多與大資料相關的開發需求。因此對大資料知識也有必要進行一些學習理解。    

在這裡還是要推薦下我自己建的大資料學習交流群:199427210,群裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料軟體開發相關的),包括我自己整理的一份最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴加入。

 

前言

目前人工智慧和大資料火熱,使用的場景也越來越廣,日常開發中前端同學也逐漸接觸了更多與大資料相關的開發需求。因此對大資料知識也有必要進行一些學習理解。

基礎概念

大資料的本質

一、資料的儲存:分散式檔案系統(分散式儲存)

二、資料的計算:分部署計算

基礎知識

學習大資料需要具備Java知識基礎及Linux知識基礎

學習路線

(1)Java基礎和Linux基礎

(2)Hadoop的學習:體系結構、原理、程式設計

第一階段:HDFS、MapReduce、HBase(NoSQL資料庫)

第二階段:資料分析引擎 -> Hive、Pig

資料採集引擎 -> Sqoop、Flume

第三階段:HUE:Web管理工具

ZooKeeper:實現Hadoop的HA
Oozie:工作流引擎

(3)Spark的學習

第一階段:Scala程式語言

第二階段:Spark Core -> 基於記憶體、資料的計算

第三階段:Spark SQL -> 類似於mysql 的sql語句

第四階段:Spark Streaming ->進行流式計算:比如:自來水廠

(4)Apache Storm 類似:Spark Streaming ->進行流式計算

NoSQL:Redis基於記憶體的資料庫

HDFS

分散式檔案系統 解決以下問題:

• 硬碟不夠大:多幾塊硬碟,理論上可以無限大

• 資料不夠安全:冗餘度,hdfs預設冗餘為3 ,用水平復制提高效率,傳輸按照資料庫為單位:Hadoop1.x 64M,Hadoop2.x 128M

• 管理員:NameNode 硬碟:DataNode

![image.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/8ca9f78b244c7f991e73f71fd1e56421.png)

MapReduce

基礎程式設計模型:把一個大任務拆分成小任務,再進行彙總

• MR任務:Job = Map + Reduce

Map的輸出是Reduce的輸入、MR的輸入和輸出都是在HDFS

MapReduce資料流程分析:

• Map的輸出是Reduce的輸入,Reduce的輸入是Map的集合

 

大資料入門之Hadoop基礎學習

 

HBase

什麼是BigTable?: 把所有的資料儲存到一張表中,採用冗餘 ---> 好處:提高效率

• 因為有了bigtable的思想:NoSQL:HBase資料庫

• HBase基於Hadoop的HDFS的

• 描述HBase的表結構

核心思想是:利用空間換效率

 

大資料入門之Hadoop基礎學習

 

Hadoop環境搭建

環境準備

Linux環境、JDK、http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0-src.tar.gz

安裝

1、安裝jdk、並配置環境變數

vim /etc/profile 末尾新增 ![image.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/a9bf2e19410f9b3d38c8b0ca64b2f264.png)

2、解壓hadoop-3.0.0.tar.gz、並配置環境變數

tar -zxvf hadoop-3.0.0.tar.gz -C /usr/local/ mv hadoop-3.0.0/ hadoop

 

大資料入門之Hadoop基礎學習

 

 

 

 

大資料入門之Hadoop基礎學習

 

vim /etc/profile 末尾新增

 

大資料入門之Hadoop基礎學習

 

配置

Hadoop有三種安裝模式:

本地模式 :

• 1臺主機
• 不具備HDFS,只能測試MapReduce程式

偽分佈模式:

• 1臺主機
• 具備Hadoop的所有功能,在單機上模擬一個分散式的環境
• (1)HDFS:主:NameNode,資料節點:DataNode
• (2)Yarn:容器,執行MapReduce程式
• 主節點:ResourceManager
• 從節點:NodeManager

全分佈模式:

• 至少3臺

我們以偽分佈模式為例配置:

修改hdfs-site.xml:冗餘度1、許可權檢查false

 

 

修改core-site.xml

 

 

修改mapred-site.xml

 

 

修改yarn-site.xml

 

 

格式化NameNode

hdfs namenode -format

看到common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted表示格式化成功

啟動

start-all.sh

(*)HDFS:儲存資料

(*)YARN:

訪問

 

 

HDFS: http://192.168.56.102:50070

Yarn: http://192.168.56.102:8088

 

大資料入門之Hadoop基礎學習

 

檢視HDFS管理介面和yarn資源管理系統

 

大資料入門之Hadoop基礎學習

 

 

 

 

大資料入門之Hadoop基礎學習

 

基本操作:

HDFS相關命令

 

 

 

大資料入門之Hadoop基礎學習

 

MapReduce示例

 

大資料入門之Hadoop基礎學習

 

結果:

 

大資料入門之Hadoop基礎學習

 

如上 一個最簡單的MapReduce示例就執行成功了

思考

Hadoop是基於Java語言的,前端日常開發是用的PHP,在使用、查詢錯誤時還是蠻吃力的。工作之餘還是需要多補充點其它語言的相關知識,程式語言是我們開發、學習的工具,而不應成為限制我們技術成長的瓶頸