TL;DR
如果發現 hbase shell 在 scan 或 count 的筆數與你預期筆數不一致的話,就 split region 看看吧。
--- 以下是前言,還真長 XD ---
最近都在忙著新版本上線,所以小編也好一陣子沒發文了。不過這幾天有個有趣的案例,想跟大家分享一下。
有在看小編文章的大概會知道我們產品的資料庫是以 HBase 建置而成的,而 HBase 最重要的組成就是 rowkey 了。若 rowkey 設計錯誤輕微可以使用 column 來救,嚴重的甚至要砍掉整筆 row,重新設計 rowkey 才能解決。
兩年前在設計某 table 的 rowkey 時,不小心忘了對 rowkey 做 salt (HBase 基礎之一,避免 scan 時產生 hotspotting),如果又沒切 region 的話 (HBase 基礎之一,避免 scan 時產生 hotspotting),這些資料在建立時都會跑到同一個 region,在 scan 的時候效能會超差。
像這種例子就算使用 column 來救也完全沒辦法,所以小編就打算把整筆 row 砍掉重新把 salt 加上去。
--- 以下是追蹤過程 ---
原 rowkey 開頭及加上 salt 之後的新 rowkey 開頭如下:
* 原:A000001、新:DNhA000001
* 原:A000002、新:dMfA000002
* 原:A000003、新:p9OA000003
* 以此類推
原 rowkey 相同 pattern (A000XXX) 的 row 有 2000 萬筆 (在 hbase shell 內使用 count 來計算 table 的資料量),所以這次 rebuild 總共會刪除原 rowkey 共 2000 萬筆,新增新 rowkey 共 2000 萬筆。
在使用 HBase 的 Java API 執行增刪 rebuild 後,在 hbase shell 使用 count 計算 table 的資料量時卻只有 900 萬筆。一開始小編還以為是 compaction 跟 flush 的問題,所以強制對 table 做了下面幾個動作,以確保資料有在 HFile 裡面正確地寫入及刪除:
* 確認資料都會刪除:compact、major_ compact
* 確認資料都會寫入:flush
但執行完後再跑一次 count 也是一樣只有 900 萬筆,所以就開始找問題點了。
後來又使用 HBase 的 exists API,確認有找到 2000 萬筆的資料。一開始小編以為是 MapReduce 的問題,因為 HBase 計算 row count 是使用 MapReduce 來執行的,但找了一堆資料都沒人說有類似問題。後來想說在 hbase shell 內使用 scan {COLUMNS => "cf:XX"} 將所有的資料都拿出來,發現也是只有 900 萬筆,所以初步排除是 MapReduce 的問題。
後來比對了新增的 rowkey 及目前 scan 出來的 rowkey,發現 scan 出來的 rowkey 只有到 GbVA000017 而已,後面的 H-Z、a-z 開頭的全部都沒出現。所以小編使用 hbase shell 的 get 指令,確認在 Java API 新增的 rowkey (A-Z、a-z 開頭的) 是否存在於 table 內,發現用 get 可以拿的到資料。討論後用 scan 加 start rowkey 試試,結果如下:
* STARTROW => "GbVA000017":只找到一筆
* STARTROW => "H":可以找到 H 之後的所有資料
看了這結果,真的覺得非常奇怪啊!!!
後來大神 Cowman Chiang 說要不要試著用 split 讓 HBase 重切 region 看看,等於是 rebuild region 的意思,因為 split 會使用字母順序切分成不同的 region,讓 row 重新分散。split 完之後再做一次 count 果然就找到 2000 萬筆資料了啊。
感恩 Cowman Chiang 讚嘆 Cowman Chiang!!!
--- 以下是結論 ---
目前看起來就是 region 發生異常,還不知道是什麼原因會造成這次事件的發生。但如果發現 scan 或 count 的筆數與你預期的內容不一致的話,就 split region 看看吧。
--- 本次追蹤使用工具 ---
* Linux: grep, cat, cut, sort, sed, comm, wc, less, head
* Java: exists, scan, get, put, BufferedReader
* hbase shell: snapshot, split, compact, major_compact, flush, restore_snapshot, scan, get, disable, enable, clone_snapshot, list_snapshots
--- 20180112 後記 ---
後來把 snapshot 還原之後,重新做了一次 rebuild 再做 count,結果還是一樣只有 900 萬筆,然後用 hbase hbck -repair 試著看看是否能把 region 修復 (有 4 個 inconsistencies),修復完後一樣是 900 萬筆。
也有同事說到會不會是資料塞太快的關係,造成 region 無法 split 完整才會發生這個問題。對於這個說法,小編也還在研究看看,有什麼進度會再分享給大家知道。
#hbase #hadoop #mapreduce #hotspotting
同時也有23部Youtube影片,追蹤數超過1萬的網紅Ritorun Ch.りとるん,也在其Youtube影片中提到,よかったらチャンネル登録、高評価👍Twitterフォローしてくれると嬉しいです! ୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧ メンバーの方で JAVA版マインクラフトを持っている方にお手伝いしてもらっています。 一緒にマイクラで遊びたい方がいたらご連絡ください! ୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈...
「java sort」的推薦目錄:
- 關於java sort 在 Kewang 的資訊進化論 Facebook 的最佳解答
- 關於java sort 在 แมงเม่าคลับ แบ่งปันความรู้ในการเล่นหุ้น Facebook 的最讚貼文
- 關於java sort 在 Ritorun Ch.りとるん Youtube 的最讚貼文
- 關於java sort 在 Ritorun Ch.りとるん Youtube 的精選貼文
- 關於java sort 在 Ritorun Ch.りとるん Youtube 的最讚貼文
- 關於java sort 在 Random Sort (bogosort, stupid sort) implementation in Java 的評價
- 關於java sort 在 Sort an array in Java - Stack Overflow 的評價
java sort 在 แมงเม่าคลับ แบ่งปันความรู้ในการเล่นหุ้น Facebook 的最讚貼文
การบ้านช่วงหยุดปลายปีสำหรับนักลงทุนที่อยากพัฒนาตนเอง และเปิดโลกของ Trading-Investing Strategies และ Stock Screening Criteria ทั้งในเชิง Technical - Fundamental ลองดูชื่อกลยุทธ์แล้วไล่ google อ่านกันดูนะครับ มีหลายๆระบบน่าสนใจครับ สู้ๆ ^o^
http://www.aaii.com/stock-screens/performance?sort=total&order=desc
-----------------------------
ประกาศ!! SiamQuant สยามควอนท์ : จุดเริ่มต้นของการลงทุนอย่างเป็นระบบ ( แมงเม่าคลับ แบ่งปันความรู้ในการเล่นหุ้น ) เปิดรับสมัครทีมงานเพิ่มเติม เพื่อร่วมเป็นส่วนหนึ่งในการผลักดันโครงการ SiamQuant Academy ซึ่งเป็นโปรเจคในการสนับสนุนการลงทุนอย่างเป็นระบบของนักลงทุนไทย ด้วยการเผยแพร่ความรู้, ฐานข้อมูลเพื่อการวิจัย และสังคมแห่งการลงทุนอย่างเป็นระบบในปี 2016 ที่กำลังจะมาถึงนี้!!!
โดยเรากำลังเปิดรับตำแหน่งต่างๆ เพิ่มเติมดังนี้ครับ
1. General-Digital Marketing Manager (Full-Time) 1 คน
2. Quantitative Database Developer(Full-Time) 1 คน
3. Quantitative Strategy Researcher (Full-Time) 1 คน
ใครที่สนใจขอให้ส่ง Email จ่าหน้าตาม ตำแหน่ง + Resume :
http://mangmaoclub.com/join-us/
---------------------
คุณสมบัติพื้นฐาน
- ซื่อสัตย์ต่อตนเองและผู้อื่น (สำคัญมากๆกับงานที่จะทำครับ)
- มีความมุ่งมั่น ไฟแรงสูง และสามารถเรียนรู้สิ่งใหม่ๆได้อยู่เสมอ
- มีความเป็นมืออาชีพและความรับผิดชอบที่จะจบงานให้ได้ตามกำหนด
- ยืดหยุ่น ไม่เกี่ยงงาน สามารถทำงานในวันหยุด หรืองานดึกๆเร่งๆได้ไม่มีปัญหา
- มีความคิดริเริ่ม สร้างสรรค์ และจิตใจที่เปิดกว้าง พร้อมแหวกแนวได้เสมอ
- อารมณ์ดี มีมารยาท มีน้ำใจ เป็นมิตร เข้ากับคนง่าย รู้จักการทำงานเป็นทีม และรักพวกพ้อง
*** รักสัตว์ และอ่านแมงเม่าคลับเป็นประจำ ***
--------------------
รายละเอียดงานและ Skill Set เบื้องต้น
General-Digital Marketing Manager :
งานหลักๆจะเป็นการบริหาร-การจัดการระบบงานต่างๆในบริษัท และการทำงานด้านการตลาดซึ่งเกี่ยวข้องกับผลิตภันฑ์และวงการ Quant ในประเทศไทย รวมถึงการดูแล Website และ Fanpage ต่างๆของ SiamQuant
- Basic Knowledge : English, Statistics/Econometrics, Finance, Trading-Investing
- General Skills : Lean Management, Digital Marketing, Growth Hacking
- Computer Skill : Basic Programming, Hardware-Software-Network Skill, GitHub
- Basic Knowledge : English, Statistics/Econometrics, Finance, Trading-Investing
Note : หากมีพื้นฐานด้านการลงทุน, การ Programming เช่นเขียน R, Python, Amibrker AFL ได้, ใช้ Wordpress และทำ Digital Marketing อย่างใดอย่างหนึ่งเป็นด้วยจะได้รับการพิจารณาเป็นพิเศษ
Database Dev. และ Quant Reseacher :
งานที่จะได้รับมอบหมายจะเกี่ยวข้องกับการออกแบบและดูแลระบบฐานข้อมูล รวมถึงวิจัยค้นคว้ากลยุทธ์การลงทุนในรูปแบต่างๆ โดยต้องใช้ภาษาหลักๆคือ R, Python, SQL, Amibroker AFL และภาษาเฉพาะของโปรแกรมด้านการเงินต่างๆ อย่างไรก็ตามผู้สมัครควรควรมีพื้นฐานต่างๆดังนี้
- Basic Knowledge : English, Statistics/Econometrics, Finance, Trading-Investing
- General Programming Skills : Python, Java, C++/C#, VB, SQL, OOP
- Computer Skill : Hardware-Software-Network Skill, GitHub
Note : หากมีพื้นฐานด้านการลงทุน, เชี่ยวชสญการเขียนภาษา R, Python, Amibroker (Custom Backtester Level), Metastock, Matlab, MQL อย่างใดอย่างหนึ่งด้วยจะได้รับการพิจารณาเป็นพิเศษ
หวังว่าจะได้รู้จักและร่วมงานกัน อย่าลืมติดต่อเข้ามานะครับ :D
http://mangmaoclub.com/join-us/
java sort 在 Ritorun Ch.りとるん Youtube 的最讚貼文
よかったらチャンネル登録、高評価👍Twitterフォローしてくれると嬉しいです!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
メンバーの方で
JAVA版マインクラフトを持っている方にお手伝いしてもらっています。
一緒にマイクラで遊びたい方がいたらご連絡ください!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸ FANBOX
https://www.fanbox.cc/@ritorun
▸ りとるんグッズ
https://ritorun.booth.pm/
▸ Twitter
https://twitter.com/RitorunGames
▸ りとるんメンバーシップはこちらから↓↓(コミュニティ更新8/24🆕)
https://www.youtube.com/channel/UC3tOL8JHgdhz4hPU-DKYXNw/join
▸ りとるんの欲しい物が詰まったリスト
https://www.amazon.co.jp/hz/wishlist/ls/NC710X6BK5G2?&sort=default
▸ マシュマロ
https://marshmallow-qa.com/ritorungames?utm_medium=url_text&utm_source=promotion
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▾お願い▾
※配信に関係ない、個人的な会話のやり取りは控えてください。
※話題に出してない配信者さんの名前を出さない、他配信で私の名前も出さないで下さい(配信者さんが出してる場合を除く)
※不快になるようなコメント等はしないでください
※スパムや荒らしを見かけても反応しないこと、ブロック&通報で無視してください
(BANされた人がいてもスルーしてください)
皆さんご協力お願いね!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸総合タグ 【#りとるん】
▸生配信 【#切りとるん】
▸ファンアート【#りとアート】
▸タグ検索用 【#りとるっく】
▸ファンネーム【りとっこ】
✉ [email protected](連絡用、Amazonギフト券、BAN解除依頼等)
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
スキン提供していただきました!ありがとうございます!
通常衣装:Saika
ルームウェア:くれさん
水着:くれさん
java sort 在 Ritorun Ch.りとるん Youtube 的精選貼文
よかったらチャンネル登録、高評価👍Twitterフォローしてくれると嬉しいです!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
メンバーの方で
JAVA版マインクラフトを持っている方にお手伝いしてもらっています。
一緒にマイクラで遊びたい方がいたらご連絡ください!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸ FANBOX
https://www.fanbox.cc/@ritorun
▸ りとるんグッズ
https://ritorun.booth.pm/
▸ Twitter
https://twitter.com/RitorunGames
▸ りとるんメンバーシップはこちらから↓↓(コミュニティ更新8/24🆕)
https://www.youtube.com/channel/UC3tOL8JHgdhz4hPU-DKYXNw/join
▸ りとるんの欲しい物が詰まったリスト
https://www.amazon.co.jp/hz/wishlist/ls/NC710X6BK5G2?&sort=default
▸ マシュマロ
https://marshmallow-qa.com/ritorungames?utm_medium=url_text&utm_source=promotion
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▾お願い▾
※配信に関係ない、個人的な会話のやり取りは控えてください。
※話題に出してない配信者さんの名前を出さない、他配信で私の名前も出さないで下さい(配信者さんが出してる場合を除く)
※不快になるようなコメント等はしないでください
※スパムや荒らしを見かけても反応しないこと、ブロック&通報で無視してください
(BANされた人がいてもスルーしてください)
皆さんご協力お願いね!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸総合タグ 【#りとるん】
▸生配信 【#切りとるん】
▸ファンアート【#りとアート】
▸タグ検索用 【#りとるっく】
▸ファンネーム【りとっこ】
✉ [email protected](連絡用、Amazonギフト券、BAN解除依頼等)
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
スキン提供していただきました!ありがとうございます!
通常衣装:Saika
ルームウェア:くれさん
水着:くれさん
java sort 在 Ritorun Ch.りとるん Youtube 的最讚貼文
よかったらチャンネル登録、高評価👍Twitterフォローしてくれると嬉しいです!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
メンバーの方で
JAVA版マインクラフトを持っている方にお手伝いしてもらっています。
一緒にマイクラで遊びたい方がいたらご連絡ください!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸ FANBOX
https://www.fanbox.cc/@ritorun
▸ りとるんグッズ
https://ritorun.booth.pm/
▸ Twitter
https://twitter.com/RitorunGames
▸ りとるんメンバーシップはこちらから↓↓(コミュニティ更新8/24🆕)
https://www.youtube.com/channel/UC3tOL8JHgdhz4hPU-DKYXNw/join
▸ りとるんの欲しい物が詰まったリスト
https://www.amazon.co.jp/hz/wishlist/ls/NC710X6BK5G2?&sort=default
▸ マシュマロ
https://marshmallow-qa.com/ritorungames?utm_medium=url_text&utm_source=promotion
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▾お願い▾
※配信に関係ない、個人的な会話のやり取りは控えてください。
※話題に出してない配信者さんの名前を出さない、他配信で私の名前も出さないで下さい(配信者さんが出してる場合を除く)
※不快になるようなコメント等はしないでください
※スパムや荒らしを見かけても反応しないこと、ブロック&通報で無視してください
(BANされた人がいてもスルーしてください)
皆さんご協力お願いね!
୨୧┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈୨୧
▸総合タグ 【#りとるん】
▸生配信 【#切りとるん】
▸ファンアート【#りとアート】
▸タグ検索用 【#りとるっく】
▸ファンネーム【りとっこ】
✉ [email protected](連絡用、Amazonギフト券、BAN解除依頼等)
java sort 在 Random Sort (bogosort, stupid sort) implementation in Java 的推薦與評價
import java.util.Collections;. public class RandomSort {. public RandomSort(int[] i) {. int counter = 0;. System.out.println("I'll sort " + i.length + ... ... <看更多>