一、學習大數據需要的基礎
javaSE,EE(SSM)
90%的大數據框架都是java寫的
如:MongoDB--最受歡迎的,跨平臺的,面向文檔的數據庫。
Hadoop--用Java編寫的開源軟件框架,用於分佈式存儲,並對非常大的數據集進行分佈式處理。
Spark --Apache Software Foundation中最活躍的項目,是一個開源集羣計算框架。
Hbase--開放源代碼,非關係型,分佈式數據庫,採用Google的BigTable建模,用Java編寫,並在HDFS上運行。
MySQL(必須需要掌握的)
SQLon Hadoop又分:
batch SQL(Hive):一般用於複雜的 ETL 處理,數據挖掘,高級分析。
interactive SQL:交互式 SQL 查詢,通常在同一個表上反覆的執行不同的查詢
operation SQL:通常是單點查詢,延時要求小於 1 秒,該類系統主要是HBase。
Linux
Linux(一種操作系統,程序員必須掌握的,我的博客裏有我對Linux的介紹)
大數據的框架安裝在Linux操作系統上
二、需要學什麼
第一方面:大數據離線分析
一般處理T+1數據:
Hadoop:(common、HDFS、MapReduce、YARN)重點中的重點。
Hadoop的框架最核心的設計就是:HDFS 和 MapReduce,
Hadoop :主要是的環境搭建
Hadoop的思想:處理數據的思想。
Hadoop用Java編寫的開源軟件框架,用於分佈式存儲,並對非常大的數據集進行分佈式處理,
用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序,
充分利用集羣進行高速運算和存儲。
百度百科找到的:
Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。
HDFS爲海量的數據提供了存儲,MapReduce則爲海量的數據提供了計算。
HDFS:
HDFS 的架構是基於一組特定的節點構建的,這是由它自身的特點決定的。
這些節點包括NameNode(僅一個),它在 HDFS 內部提供元數據服務;
DataNode,它爲 HDFS 提供存儲塊。
由於僅存在一個 NameNode,因此這是 HDFS 的一個缺點(單點失敗)。
存儲在 HDFS 中的文件被分成塊,然後將這些塊複製到多個計算機中(DataNode)。
這與傳統的 RAID 架構大不相同。塊的大小(通常爲 64MB)和複製的塊數量在創建文件時由客戶機決定 NameNode 可以控制所有文件操作。
NameNode:
NameNode 是一個通常在HDFS實例中的單獨機器上運行的軟件,
它負責管理文件系統名稱空間和控制外部客戶機的訪問。
NameNode 決定是否將文件映射到 DataNode 上的複製塊上。
對於最常見的 3 個複製塊,第一個複製塊存儲在同一機架的不同節點上,最後一個複製塊存儲在不同機架的某個節點上。
DataNode:
DataNode 也是一個通常在HDFS實例中的單獨機器上運行的軟件。
Hadoop 集羣包含一個 NameNode 和大量 DataNode。
DataNode 通常以機架的形式組織,機架通過一個交換機將所有系統連接起來。
Hadoop 的一個假設是:機架內部節點之間的傳輸速度快於機架間節點的傳輸速度
MapReduce:
概念"Map(映射)"和"Reduce(歸約)"
MapReduce是面向大數據並行處理的計算模型、框架和平臺,它隱含了以下三層含義:
1)MapReduce是一個基於集羣的高性能並行計算平臺(Cluster Infrastructure)。
2)MapReduce是一個並行計算與運行軟件框架(Software Framework)
3)MapReduce是一個並行程序設計模型與方法(Programming Model & Methodology)。
Hive(MPP架構):
大數據數據倉庫
通過寫SQL對數據進行操作,類似於mysql數據庫中的sql
擴展:
MPP架構:MPP 架構的優點是查詢速度快,通常在秒計甚至毫秒級以內就可以返回查詢結果。
(但MPP 架構不適合大規模部署)
HBase(博客中有 這個重要)
基於HDFS的NOSQL數據庫
面向列的存儲
列存儲:
列存儲的思想是將元組垂直劃分爲列族集合,每一個列族獨立存儲,列族可以退化爲只僅包含
一個列的平凡列族。當查詢少量列時,列存儲模型可以極大的減少磁盤IO 操作,提高查詢性能。
當查詢的列跨越多個列族時,需要將存儲在不同列族中列數據拼接成原始數據,由於不同列族
存儲 在不同的 HDFS 節點上,導致大量的數據跨越網絡傳輸,從而降低查詢性能。
擴展前沿框架:
協作框架:
sqoop(橋樑:HDFS 《==》RDBMS)
Sqoop(發音:skup)是一款開源的工具,一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,
主要用於在Hadoop(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞,
可以將一個關係型數據庫(例如 :MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS
中,也可以將HDFS的數據導進到關係型數據庫中。
Sqoop介紹:
Sqoop項目開始於2009年,最早是作爲Hadoop的一個第三方模塊存在,後來爲了讓使用者能夠快速部署,
也爲了讓開發人員能夠更快速的迭代開發,Sqoop獨立成爲一個Apache項目。
RDBMS:
RDBMS即關係數據庫管理系統(Relational Database Management System),
是將數據組織爲相關的行和列的系統而管理關係數據庫的計算機軟件就是關係數據庫管理系統,
常用的數據庫軟件有Oracle、SQL server等。
RDBMS 是SQL 的基礎,同樣也是所有現代數據庫系統的基礎
RDBMS 中的數據存儲在被稱爲表(tables)的數據庫對象中。
表是相關的數據項的集合,它由列和行組成。
RDBMS的特點:
1.數據以表格的形式出現
2.每行爲各種記錄名稱
3.每列爲記錄名稱所對應的數據域
4.許多的行和列組成一張表單
5.若干的表單組成database
flume:收集日誌文件中信息
Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,
Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,
Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力
調度框架anzkaban,瞭解
crontab(Linux自帶)
crontab命令常見於Unix和類Unix的操作系統之中,用於設置週期性被執行的指令。
該命令從標準輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。
Kylin(中國自主知識產權操作系統)
Kylin操作系統是國家高技術研究發展計劃(863計劃)的重大成果之一,
是以國防科技大學爲主導,與中軟、聯想等單位聯合設計和開發的具有完全自主版權,
可支持多種微處理器和多種計算機體系結構,具有高性能、高可用性和高安全性,
並與Linux應用二進制兼容的國產中文服務器操作系統。
Impala:
Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,
能查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。
已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,
仍然是一個批處理過程,難以滿足查詢的交互性。重要的是它查詢的很快
ElasticSearch(ES)
ElasticSearch是一個基於Lucene的搜索服務器。
它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。
Elasticsearch是用Java開發的,並作爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。
ES概念:
cluster
代表一個集羣,集羣中有多個節點,其中有一個爲主節點,這個主節點是可以通過選舉產生的,
主從節點是對於集羣內部來說的。
es的一個概念就是去中心化,字面上理解就是無中心節點,這是對於集羣外部來說的,
因爲從外部來看es集羣,在邏輯上是個整體,你與任何一個節點的通信和與整個es集羣通信是等價的。
瞭解:
Shards
Replicas
Recovery
River
Gateway
Discovery.zen
Transport
下一篇大數據常識正在找資料完善中。