Google Cloud Bigtable 應用實例
在這篇文章之前,部落格分享了好多機器學習、深度學習在視覺、語音、文字結構和翻譯的運用。要訓練這些模型,都需要大量的資料。這些資料從哪裡來?怎麼儲存?對於大如Google 的公司來說,都是一個非常大的問題,也是為什麼大數據這個名詞會在幾年前非常火紅。而本篇要介紹的是 Google Cloud Bigtable 是 NoSQL database 用在大數據的商用版本。
Bigtable 優點
• 速度快、效能高,以下是兩種 storage type 的存取速度。其中 QPS 代表每秒鐘可以進行幾次的查詢。關於 Cloud Bigtable 如何透過 load balance 來提高存取速度,Google 的官方文件也有給出很精美的圖文介紹,參見 連結 。
• 調整資源配置容易
• 和常見的大數據開源工具例如 Hadoop 和 HBase Shell 的整合度都相當高,這點會在等一下的實作裡提到
Bigtable 實作
在開始之前,需要先把 Google Cloud Bigtable 的權限開起來,點連結,並選擇 project。接著我們要來進行配置,請按照以下配置。而執行個體類型 (instance type) 的部分,我們選擇開發(development) 即可。
Bigtable 實際工作環境 (production) vs 開發 (development)
實際工作環境 (production) 和開發 (development) 的差別主要是在 node 數,實際須最少指定 3 個,而開發只有 1 個。但因為 node 數會影響查詢的 latency,所以當產品擺上線時,建議選擇 production。此外,production 比起 development 還有一個大優勢,那就是 production 環境才有支援 SLA (Service Level Agreement)。什麼是 SLA 呢,簡單來說就是 Google 對自己產品的一個保證,倘若因為任何因素,導致服務掛彩,當掛彩時間相比 1 個月超過一定比例的話,Google 會給客戶下個月一定的優惠。以下是 SLA 的級距,當正常運作時間是一個月的 99% ~ 99.5% 時,下個月 Google 會作 10% 的優惠,以此類推。
回到實作的部分,Create 完 instance 之後,我們要使用 shell 來操作我們的 cluster,請點連結。點連結的同時,會詢問是否 clone Google Bigtable quickstart 的教學 repo,請點繼續。連上後,請輸入
gcloud config set project
project id 的部分,請選擇當初開 Bigtable instance 的 project,如果不知道的話,請點連結,而 id 是下圖紅框的部分。
接著執行
./quickstart.sh
有可能會接收到以下的詢問,那就補上下圖紅框的 id 即可。
接著,程式會自動安裝上 java、hadoop、Hbase shell,並自動進入 Hbase shell,如下圖。
Hbase shell 的功能是拿來操作 hadoop HDFS file system。透過 Hbase Shell,我們可以快速 create/drop table 和 insert/delete data。以下做幾個簡單的操作:
• 創建 table,然後 column family 為 cf1。column family 是 NoSQL database 像是 Cassandra 的一個特殊用法,詳細可以參考教學(英) (中1) (中2)。
• 列出所有 table• 把 test-value 放在 row r1, 使用 column family cf1 和 column qualifier c1
• 使用 scan 指令來看我們到底加了什麼資料
• 最後把 my-table 砍掉
計價方式
目前主流的儲存硬體主要是 HDD 和 SSD。SSD 有著存取速度快的優點,相對的價格比起HDD而言會高一些。在創建 Bigtable 的時候可以選擇要使用哪一種。一般來說如果價格不是大問題的話,盡量選擇 SSD,在需要大量儲存,且 latency 不會是大議題的時候,才選擇HDD做為儲存方式。如果選擇兩者之一就像選者午餐一樣困難的話,詳見連結。
而節點和網路的計價則如下,節點數會影響資料的存取速度﹐須要特別注意的是,開發版本的 Bigtable node 數只有 1 個,而實際工作環境的最小的點節點數為 3。
至於網路輸出的意思代表的是資料傳輸到哪裡,以下是台灣機房的價格:
結語
以上是這一次的 Cloud Bigtable 教學,我們使用了 Google 提供的 quickstart 來快速建置 Hadoop 和 Hbase Shell,然後使用 Hbase shell 來建立 table 和插入資料。
(本文來自合作部落客 沒一村:沒一村生活點滴,GCP 專門家授權轉載。)
相關文章
【GCP 專欄】Google Cloud Bigtable 的介紹與應用 (一)
【GCP 專欄】Google Cloud Bigtable 的介紹與應用 (二)
GCP 存儲服務(一): Cloud Storage/ Datastore / Bigtable / SQL 介紹與比較
Google 儲存空間(二): Cloud Storage/ Datastore / Bigtable / SQL 計價方式與使用優勢
Google Cloud Datastore 介紹與實作 – 高度擴充性的 NoSQL 資料庫