1 Hadoop簡介


1.1 什么是Hadoop

分布式計算平臺

優點:

高可靠性

高擴展性

高效性 在各節點之間動態地移動數據,保證各個節點的動態平衡

高容錯性 數據多副本;重新啟動失敗任務

?

Hadoop應用:

Yahoo 廣告系統Web搜索研究

Facebook 數據分析 機器學習

百度 搜索日志分析 網頁數據挖掘

淘寶 存儲并處理電子商務交易的相關數據

中國移動研究院對數據進行分析并對外提供服務


1.2 Hadoop項目及其結構:

Pig ???Chukwa ???Hive ???Hbase

MapReduce ???HDFS ???ZooKeeper

Common ???Avro

?

Common

Hadoop其他子項目提供支持的常用工具

主要包括FileSystemRPC和串行化庫

Avro

是用于數據序列化的系統

提供了豐富的數據結構類型、快速可壓縮的二進制數據格式、存儲持久性數據的文件集、RPC、簡單的動態語言集成功能

依賴于模式(scheme),數據的讀寫是在模式下完成的,這樣可以減少寫入數據的開銷,提高序列化的速度并縮減其大小

RPC中,Avro系統的客戶端和服務器端通過握手協議進行模式的交換

MapReduce

一種編程模型,用于大數據集(1TB)的并行運算

HDFS
分布式文件系統,具有高容錯性(fault-tolerant

高吞吐率(high-throughput

設計目標:

檢測和快速恢復硬件故障

流式數據訪問 ? 重點在于批量處理而不是用戶交互式處理,數據吞吐量而不是數據訪問的反應速度

簡化一致模型:一次寫入,多次讀取

通信協議

ClientNameNode--Client Protocol ???

NameNodeDataNode--DataNode Protocol

Chukwa

開源的數據收集系統,監控和分析大型分布式系統的數據

HDFSMapReduce框架之上搭建

顯示、監視和分析數據結果,以便更好的利用所收集的結果

Hive

建立在Hadoop之上的數據倉庫

MapReduce編程模型中也可通過Hive QL查詢數據

Hbase

分布式的、面向列的開源數據庫,該技術來源于Google——Bigtable

適合非結構化數據存儲的數據庫

基于列模式,一個數據行擁有一個可選擇的鍵和任意數量的列

Pig

對大型數據集進行分析、評估的平臺

突出優勢:它的結構能經受住高并行化的檢驗

底層由一個編譯器組成,運行時會產生一些MapReduce程序序列

ZooKeeper

為分布式應用設計的開源協調服務

提供同步、配置管理、分組、命名服務,減少分布式應用程序所承擔的協調任務

目錄樹結構

J ava編寫,支持Java C

?

Sqoop:

為高效傳輸批量數據而設計的一種工具,其用于Apache Hadoop和結構化數據庫如關系型數據庫之間的數據傳輸


Flume:

一種分布式的、可靠的、用于高效搜集、匯總、移動大量日志數據的服務。


Mahout:

一種基于Hadoop的機器學習和數據挖掘的分布式計算框架算法集,實現了多種MapReduce模式的數據挖掘算法。


Spark:

一個開源的數據分析集群計算框架,建立于HDFS之上,用于構建大規模、低延時的數據分析應用,采用Scala語言開發


Storm:

分布式的、容錯的實時計算系統,屬于流處理平臺,多用于實時計算并更新數據庫

也可被用于連續計算(continuous computation),對數據流做連續查詢,在計算時將結果以流的形式輸出給用戶


Shark:

即Hive on Spark,為Spark打造的數據倉庫系統,兼容HQL


Phoenix:

構建在HBase之上的SQL中間層,Java編寫

Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase scan,并編排執行以生成標準的JDBC結果集。

直接使用HBase API、協同處理器與自定義過濾器

對簡單查詢來說是毫秒

對百萬級別的行來說是秒


Tez:

基于YARN之上的DAG(Directed Acyclic Graph)就算框架

把MapReduce拆分成若干子過程,同時可以把多個MapReduce任務組合成一個較大的DAG任務,減少了MapReduce中間過程文件的存儲

合理組合其子過程,減少任務的運行時間


Ambari:

一個供應、管理和監視Hadoop集群的開源框架

1.3 Hadoop體系結構:

兩大核心:HDFS ?MapReduce

通過HDFS實現分布式存儲的底層支持

通過MapReduce實現分布式并行任務處理的程序支持

?

HDFS:

主從結構

NameNode:管理文件系統的命名空間和客戶端對文件的訪問操作

DataNode:管理存儲的數據

?

MapReduce

JobTracker:調度一個作業的所有任務

TaskTracker:負責主節點指派的任務

JobTracker接收到提交作業和其配置信息后,將配置信息等分發給從節點,同時調度任務并監控TaskTracker的執行。

?

1.4 Hadoop與分布式開發

Hadoop上并行應用程序的開發是基于MapReduce編程模型的

MapReduce庫的用戶用兩個函數來表達這個計算:MapReduce

Map函數接收一個輸入的key/value對,然后產生一個中間key/value對的集合;

把具有相同key值得value集合在一起,然后傳遞給Reduce函數。

Reduce函數接收key和相關的value集合

每次調用Reduce函數只產生01個輸出的value值。

MapReduce計算模型非常適合在大量計算機組成的大規模集群上并行運行。


原理:

數據分布存儲

分布式并行計算:DataNode既是數據存儲結點,也是計算結點

本地計算:移動計算比移動數據更經濟

任務粒度:Block ?MMap任務分布于N臺計算機上并行運行,Reduce任務數由用戶指定

數據合并:Combine,在分割之前,將中間結果有相同keyvalue合并

數據分割:Partition,把Map任務的中間結果按key劃分為R份——reduce任務數

ReduceMap任務的中間結果在執行完CombinePartition之后,以文件形式存儲于本地磁盤,中間結果的位置將通知JobTrackerJobTracker再通知Reduce任務到哪取中間結果。

任務管道:有RReduce任務就有R個最終結果,很多情況下它們無需合并,而是作為另一個計算任務的輸入,這也就形成了任務管道。

?

1.5 Hadoop計算模型——MapReduce

將運行于大規模集群上的復雜的并行計算過程高度地抽象為兩個函數:MapReduce

一個Job通常把輸入的數據集切分為若干獨立的數據塊,由Map任務并行處理。

框架對Map的輸出進行排序,然后把結果輸入給Reduce任務。

計算結點和存儲結點在一起。

?

1.6 Hadoop數據管理

分布式文件系統 HDFS

分布式數據庫 HBase

數據倉庫工具 Hive

?

HDFS的數據管理

整個集群的單一命名空間

數據一致性:一次寫入,多次讀取

文件分割成多個文件塊,每個文件塊被分配存儲到數據結點上,根據配置由復制文件塊保證數據安全

?

三個角色:NameNodeDataNodeClient

NameNode元數據信息:路徑,副本數,分塊,塊所在的結點

?

文件寫入:

1.ClientNameNode發起文件寫入請求;

2.NameNode根據文件大小和文件塊配置情況,返回給Client所管理的DataNode的信息;

3.Client將文件劃分為多個Block,根據DataNode的地址信息按順序將其寫到每一個DataNode中。

?

文件讀取:

1.ClientNameNode發起文件讀取的請求;

2.NameNode返回文件存儲的DataNode信息;

3.ClientDataNode讀取文件。

?

文件塊復制:

1.NameNode發現部分文件的Block不符合最小復制數這一要求或部分DataNode失效;

2.通知DataNode相互復制Block

3.DataNode開始直接相互復制。

?

?

文件塊的位置:三個副本,本機架2個,另一機架1

心跳檢測:用心跳檢測DataNode的健康狀況

數據復制:場景為DataNode宕機、需平衡DataNode的存儲利用率和平衡DataNode數據交互壓力等情況,可使用HDFSbalancer命令配置threshold來平衡每一個DataNode的磁盤利用率。

數據校驗:CRC32 ???寫入校驗信息,讀入時,先校驗后讀入

管道性寫入:寫入文件到DataNode上時,首先讀取一個Block,然后將其寫到一個DataNode上,接著由第一個DataNode將其傳遞到備份的DataNode上,直到所有備份完成后,客戶端才開始寫下一個block

安全模式:啟動時進入/命令進入。數據不允許修改和刪除。主要是為了在系統啟動時檢查各個DataNode上數據塊的有效性,同時根據策略進行必要的復制或刪除部分數據塊。

?

Hbase的數據管理

類似于BigTable的分布式數據庫

一個稀疏的、長期存儲的、多維度的排序映射表,這張表的索引是行關鍵字、列關鍵字和時間戳

表中的數據都是字符串

每一行都有一個可排序的主鍵和任意多的列

由于列是稀疏存儲的,所以同一張表中的每一行數據都可以有截然不同的列

列名字的格式是<family><label>

每一張表有一個family集合,這個集合是固定不變的,相當于表結構

label值相對于每一行來說都是可以改變的

Hbase把同一family中的數據存儲在同一目錄下

Hbase的寫操作是鎖行的,每一行是一個原子元素,可以加鎖

時間戳,每次生成一個新的版本都會跟一個時間戳,可以設置保留幾個版本

客戶端可以獲得最近版本,也可獲得全部版本

?

三大組成部分

HBaseMasterHBase主服務器

ZooKeeper

領導選舉法(Leader Election Algorithm

主服務器承擔初始化集群的任務。當主服務器第一次啟動時,會試圖從HDFS獲取根或根域目錄,如果獲取失敗則創建根或根域目錄,以及第一個元域目錄。

下次啟動時,主服務器可獲得集群和集群中所有域的信息。

負責域的分配、域服務器運行狀態的監視、表格管理

HRegionServerHbase域服務器

服務于主服務器分配的域、處理客戶端的讀寫請求、本地緩沖回寫、本地數據壓縮、分割域

每個域只能由一臺域服務器來提供服務

當其開始服務于某個域時,它會從HDFS文件系統中讀取該域的日志和所有存儲文件

同時管理操作HDFS文件的持久性存儲工作

客戶端與主服務器通信獲取域和域服務器列表信息后,就可以直接向域服務器發送域讀寫請求,來完成操作。

HBase Client

客戶端與Hbase主機交換消息以查找根域的位置,這是二者的唯一交流

定位根域后,客戶端獲取元域信息,元域信息中包含所需用戶域的域服務器地址

客戶端再連接元域所在的域服務器,獲得用戶域所在的域服務器地址

定位用戶域服務器后發出讀寫請求

用戶域的地址將緩存在客戶端中

?

Hive的數據管理

建立在Hadoop上的數據倉庫基礎架構,提供一系列工具進行數據的提取、轉化、加載

是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制

Hive QL

1.元數據存儲

Hive將元數據存儲在RDBMS中,有三種模式可以連接到數據庫

a.Single User Mode:此模式連接到一個In-Memory的數據庫Derby,一般用于Unit Test

b.Multi User Mode:通過網絡連接

c.Remote Server Mode:用于非Java客戶端訪問元數據庫,在服務器端啟動一個MetaStoreServer,客戶端利用Thrift協議通過MetaStoreServer來訪問元數據庫

?

2.數據存儲

無專門存儲格式,無索引

只需明確列分隔符、行分隔符

Hive中所有數據都存儲在HDFS

4種數據模型:Table、 ?External Table、?Partition、 ?Bucket

?

3.數據交換

用戶接口:客戶端、Web界面、數據庫接口

元數據存儲:通常存儲在關系數據庫中,如MySQLDerby

解釋器、編譯器、優化器、執行器

HadoopHDFS進行存儲、MapReduce進行計算

?

元數據包括表的名字、表的列、表的分區、表分區的屬性、表的屬性(外表?)、表的數據所在目錄。

生成的查詢計劃存儲在HDFS中,隨后由MapReduce調用執行

*的查詢不會生成MapReduce任務

?

1.7 Hadoop集群安全策略

用戶權限管理

用戶分組管理,為更高層的HDFS訪問、服務訪問、Job提交和配置Job等操作提供認證和控制基礎。

Hadoop上的用戶和用戶組由用戶自己指定,如果未指定,Hadoop會調用Linuxwhoami命令獲取當前Linux系統的用戶名和用戶組,將其保存在Jobuser.namegroup.name兩個屬性中。

用戶提交Job的后續認證和授權以及集群服務的訪問都將基于此用戶名和用戶組的權限及認證信息進行。

?

HDFS安全策略

用戶和HDFS服務之間的交互主要有兩種情況:

用戶機和NameNode之間的RPC交互獲取待通信的DataNode位置;

客戶機和DataNode交互傳輸數據塊

?

MapReduce安全策略

主要涉及Job提交、TaskShuffle三個方面

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

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

相關文章

Google Xpath Helper

Google Xpath Helper 下載方法&#xff1a; 1. 訪問http://chrome-extension-downloader.com/ 2. 把https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl拷貝到文本框里面&#xff0c;然后點擊“Download Extention”按鈕。 使用方法&am…

【Tensorflow】 Object_detection之訓練PASCAL VOC數據集

參考&#xff1a;Running Locally 1、檢查數據、config文件是否配置好 可參考之前博客&#xff1a; Tensorflow Object_detection之配置Training Pipeline Tensorflow Object_detection之準備數據生成TFRecord 2、訓練模型 PIPELINE_CONFIG_PATH/data/zxx/models/research/date…

2 Hadoop的安裝與配置

需要JDK、SSH 對于偽分布式&#xff0c;Hadoop會采取與集群相同的處理方式&#xff1a;按次序啟動文件conf/slaves中記載的主機上的進程&#xff0c;只不過在偽分布式中Slave為localhost&#xff08;自身&#xff09;。 Hadoop從三個角度將主機劃分為兩種角色&#xff1a; 最…

局域網訪問控制

訪問局域網內其他機器可用如下方式&#xff1a; \\PC-name\d$\dir 或者 \\192.168.xxx.xxx\d$\dir d代表d盤 但前提是對方機器已經把本機用戶設置為管理員賬戶轉載于:https://www.cnblogs.com/jimmy-c/p/4116804.html

Unity3d 插值同步

文中大體的思路&#xff1a; A玩家 移動時&#xff0c;本機自行移動&#xff0c;并發送移動指令給服務端&#xff0c;假設移動是成功的&#xff0c;服務端同步其他客戶端 B玩家&#xff0c;B玩家 中用一個隊列 Queue 來裝服務端來的移動指令&#xff0c;然后客戶端在updata中做…

laravel數據庫相關操作說明

輸出原生sql: DB::table(users)->where([[name,,張三]])->toSql(); //輸出sql為&#xff1a;select * from users where name?; DB::table(users)->where([[name,,張三]])->getQuery(); //輸出sql為&#xff1a;select * from users where name張三; 運行原生sql查…

1 數據挖掘基礎

1.1 什么是數據挖掘 從大量數據中挖掘出隱含的、未知的、對決策有潛在價值的關系、模式和趨勢&#xff0c;并用這些知識和規則建立用于決策支持的模型&#xff0c;提供預測性決策支持的方法、工具和過程&#xff0c;這就是數據挖掘。 是統計學、數據庫技術、人工智能技術的結…

R文件報錯的原因

一般R文件報錯&#xff0c;無非是資源文件錯誤&#xff0c;圖片命名錯誤&#xff0c;但是編譯都會報錯&#xff0c;可以很快解決。但是前幾天&#xff0c;引入一個第三方aar包后&#xff0c;項目編譯正確&#xff0c;但是就是R文件報錯&#xff0c;找不到R文件&#xff0c;整個…

1.0 算法本機調試方法

算法的本機調試方法&#xff1a; 從本地文件中讀取測試數據&#xff0c;進行算法調試。 例&#xff1a;讀取兩個數&#xff0c;輸出和。 1 2 11 22 111 222 輸出&#xff1a; 3 33 333 #include <fstream> //讀取本地文件需要此頭文件。調試完成后&#xff0c;提…

[轉]Excel數據轉化為sql腳本

在實際項目開發中&#xff0c;有時會遇到客戶讓我們把大量Excel數據導入數據庫的情況。這時我們就可以通過將Excel數據轉化為sql腳本來批量導入數據庫。 1 在數據前插入一列單元格&#xff0c;用來拼寫sql語句。 具體寫法&#xff1a;"insert into t_student (id,name,age…

void Update ( ) 更新 void FixedUpdate ( )

void Update ( ) 更新 void FixedUpdate ( ) 固定更新 相同點&#xff1a;當MonoBehaviour啟用時&#xff0c;其在每一幀被調用&#xff0c;都是用來更新的。 異同點&#xff1a;第一點不同&#xff1a; Update()每一幀的時間不固定&#xff0c;即第一幀與第二幀的時間間隔t…

海量數據庫的查詢優化及分頁算法方案(一)

隨著“金盾工程”建設的逐步深入和公安信息化的高速發展&#xff0c;公安計算機應用系統被廣泛應用在各警種、各部門。與此同時&#xff0c;應用系統體系的核心、系統數據的存放地――數據庫也隨著實際應用而急劇膨脹&#xff0c;一些大規模的系統&#xff0c;如人口系統的數據…

【點分治】luoguP2664 樹上游戲

應該是一道中等難度的點分&#xff1f;麻煩在一些細節。 題目描述 lrb有一棵樹&#xff0c;樹的每個節點有個顏色。給一個長度為n的顏色序列&#xff0c;定義s(i,j) 為i 到j 的顏色數量。以及 現在他想讓你求出所有的sum[i] 輸入輸出格式 輸入格式&#xff1a; 第一行為一個整數…

EasyJoyStick使用以及兩種操作桿 EasyJoyStick的使用方法,簡單的不能再簡單 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#

EasyJoyStick使用以及兩種操作桿EasyJoyStick的使用方法&#xff0c;簡單的不能再簡單Hedgehog Team-》Easy Touch -》Add Easy Touch For C#Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick配置如圖&#xff1a;然后看一下配置&#xff0c;我喜歡掌控性強一…

2.1 vector

表結構的數組實現隨機訪問快速尾插動態調整所占內存空間#include<vector>從0開始計數創建vector對象的三種方法&#xff1a; 1. vector<int> v;2. vector<int> v(10); //默認值為03. vecotr<double> v(10,8.6); //為每個元素指定初始值尾插&#xff1a…

文件系統管理 之 文件和目錄訪問權限設置

一、文件和目錄權限概述 在linux中的每一個文件或目錄都包含有訪問權限&#xff0c;這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 通過設定權限可以從以下三種訪問方式限制訪問權限&#xff1a;只允許用戶自己訪問&#xff1b;允許一個預先指定的用戶組中的用戶訪問&…

Web滲透實驗:基于Weblogic的一系列漏洞

1. 攻擊機windows10 192.168.2.104 2. 靶機ip: 192.168.2.109(linux Ubantu) 192.168.2.111(windows2008R264位) 第一步&#xff1a;啟動靶機服務 分別為linux和windows windows環境搭建&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/16KyYb1v1rP9uJ6-5MBotVw   提取…

9 月 19 日,騰訊云安全中心監測到 ?Apache Tomcat 修復了2個嚴重級別的漏洞, 分別為: 信息泄露漏洞(CVE-2017-12616)、遠程代碼執行漏洞(CVE-2017-12615

9 月 19 日&#xff0c;騰訊云安全中心監測到 Apache Tomcat 修復了2個嚴重級別的漏洞&#xff0c; 分別為&#xff1a; 信息泄露漏洞&#xff08;CVE-2017-12616&#xff09;、遠程代碼執行漏洞&#xff08;CVE-2017-12615&#xff09;&#xff0c;在某些場景下&#xff0c;攻…

2.0 STL泛型編程

Standard Template Library 在命名空間std中定義了常用的數據結構和算法 三種類型的組件&#xff1a; 容器&#xff1a; ——vector、string ——set、multiset、map、multimap ——list ——bitset ——stack ——deque、queue、priority_queue 迭代器 算法&…

SQL聯合更新

update CCTDB..Area_Infoset ParentStrb.ParentStrfrom CCTDB..Area_Info a inner join TempArea bon a.AreaId b.AreaId轉載于:https://www.cnblogs.com/davidgu/archive/2012/08/10/2631289.html