主頁 > 資料庫 > 聊起 BigTable,讓你不再膽怯

聊起 BigTable,讓你不再膽怯

2020-09-13 03:51:48 資料庫

谷歌“三駕馬車”的出現,才真正把我們帶入了大資料時代,并指明了大資料的發展方向,

GFS 作為其中一駕寶車,解決了大資料存盤的難題,它能夠把大量廉價的普通機器,聚在一起,充分讓每臺廉價的機器發揮光和熱,其中在《從谷歌 GFS 架構設計聊開去》中我們針對 GFS 進行了管中窺豹,體會到其中一斑,不得不說是人多力量大,團結就是力量的體現,

MapReduce 作為其中一座寶駕出現,主要解決海量資料計算的頭痛難題,在《悟懂MapReduce,不糾結!》中我們引入一個接地氣的“農村掰玉米”的案例進行了 MapReduce 思想的體會,大體意思是說, Map 就像人手掰一垅玉米(有個別生玉米+多數熟玉米),負責掰就行;Reduce 就像有專門收生玉米的;有專門收熟玉米的,然后各自進行匯總統計,

簡單去講,GFS 解決了分布式檔案的存盤,MapReduce 解決了海量資料的計算,

但是天生好奇,心生疑問“實時在線應用的海量結構化資料該如何存盤呢?”那么不得不提及谷歌的第三駕馬車“BigTable”,

背景?

眾所周知,Google 要存盤海量的網頁,而且要能夠存盤一個 URL 的不同時期的多個版本的網頁內容(因為網頁會不斷的更新,所以爬蟲也要不斷的針對同一個 URL 進行爬取),

上圖是摘自 BigTable 的論文,老圖配新曲,在此處主要用來闡述 BigTable 產生的其中一個背景,從中我們能夠得出如下公式,

com.cnn.www + contents: + t3 => html網頁內容

com.cnn.www + contents: + t5 => html網頁內容

com.cnn.www + contents: + t6 => html網頁內容

那么 Google 就需要設計一款類似以“URL +  contents + time stamp”為 key,以“html 網頁內容”為值的存盤系統,于是就有了 BigTable 這個鍵值系統的存在,

是啥?

Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size: petabytes of data across thousands of commodity servers.

官方定義,Bigtable 是一個分布式的結構化資料存盤系統,它被設計用來處理海量資料:通常是分布在數千臺普通服務器上的 PB 級的資料,

說清楚 BigTable 存盤啥樣子?一段話(一簞食)

A Bigtable is a sparse, distributed, persistentmulti-dimensionalsorted map.The map is indexed by a row key, column key, and a timestamp;each value in the map is an uninterpreted array of bytes.
  • BigTable 是一個稀疏的、分布式的、持久化存盤的多維度排序的 Map.(寫過兩天代碼的都不陌生,Map 由 key 和 value 組成);

  • Map 的 key 是行關鍵字、列關鍵字以及時間戳組成;

  • Map 的 value 都是一個未經決議的 byte 陣列,

看透徹 BigTable 存盤啥樣子?一張圖(一瓢飲)

  • 可以看出 BigTable 用三維(row 行關鍵字、column 列關鍵字、time 時間戳)方式定位資料,也就是以“行關鍵字列關鍵字時間戳”為 key 來定位資料;

  • 我們也可以認為 BigTable 是屬于 key-Value 的 NOSQL 資料庫系列(為你在技術選型時再加一備選),

一段話(一簞食)+ 一張圖(一瓢飲) = BigTable(足矣),

好了,到這應該對 BigTable 懵懵懂,如果感覺蒙圈、迷茫了,建議動動手指分享轉發一下(言外之意:如果沒看懂,就忽略此篇分享,莫要影響心情,因為愉悅的心情真的很重要!!!);如果感覺稍微有點意思或者豁然開朗,那就繼續往下追,

設計?

默默跟隨“一猿小講”腳步的應該都清楚,GFS 也好、MapReduce 也罷,參與者角色都采取了簡單就是美的大道至簡的思想設計,都秉承了“一人掌權,其他人辦事”的理念,那我們不妨看看 BigTable 背后是不是也是這樣的設計呢?

BigTable 主要參與者:鏈接到客戶程式中的庫、一個 Master 服務器多個 Tablet 服務器這不就是咱們之前說 GFS 的皇上~宰相模式),

Master服務器 (皇上)主要負責以下作業:

  • 為 Tablet 服務器分配 Tablets;

  • 檢測新加入的或者過期失效的 Tablet 服務器;

  • 對 Tablet 服務器進行負載均衡;

  • 對保存在 GFS 上的檔案進行垃圾收集;

  • 對模式的相關修改操作,例如建立表和列族,

Tablet服務器 (宰相)主要負責以下作業:

  • 管理一個 Tablet 的集合(通常每個服務器有大約數十個至上千個 Tablet);

  • 負責處理它所加載的 Tablet 的讀寫操作;

  • 負責在 Tablets 過大時,對其進行分割,

運轉?

寫操作,

  • Tablet 服務器首先檢查這個操作格式是否正確、操作發起者是否有執行這個操作的權限;

  • 如果校驗通過,將寫請求提交到日志 tablet log;

  • 然后將資料寫入記憶體中的 memtable;

  • 當 memtable 存到一定規模會被凍結,Bigtable 隨之創建一個新的 memtable,并將凍結的 memtable 寫入分布式檔案系統 GFS,

讀操作,

  • Tablet 服務器首先進行完整性和權限檢查;

  • 然后將一系列 SSTable 和 memtable 的存盤內容組成一個

    大的視圖,然后從中進行讀取,

設計要點:讀也好,寫也罷,客戶程式其實直接和 Tablet 服務器通信進行讀寫操作,所以 Master 服務器的負載是很輕的,

技術堆疊?

BigTable 使用 Google 的分布式檔案系統 GFS作為底層資料存盤,

BigTable 內部存盤資料的檔案是 Google SSTable 格式的;(SSTable 是一個持久化的、排序的、不可更改的 Map 結構,點一首楊坤的“無所謂”送給你,該糾結時糾結,不該糾結時莫糾結,重要的是心情愉悅),

BigTable 使用 Chubby 提供協同服務管理(若懵圈了,就想想 ZooKeeper),

思考?

畫龍畫虎難畫骨!目前的一切還是浮于表象,有沒有更進一步的認識呢?那就讓時間來告訴我們吧!

好了,這篇分享都到這兒吧,希望你們能夠喜歡,如果感覺有點幫助,那就動動手指轉發分享一下吧,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19688.html

標籤:大數據

上一篇:悟懂MapReduce,不糾結!

下一篇:【趙強老師】大資料分析引擎:Presto

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more