คำสั่ง HBase Shell พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

คำสั่งเชลล์ของ HBase ช่วยให้คุณจัดการตารางและข้อมูลได้โดยตรงจากพรอมต์แบบโต้ตอบ โดยแบ่งออกเป็นคำสั่งทั่วไป คำสั่งจัดการตาราง เช่น สร้างและลบ คำสั่งจัดการข้อมูล เช่น ใส่และดึงข้อมูล และคำสั่งจำลองคลัสเตอร์

  • 🖥️ คำสั่งทั่วไป: คำสั่ง status, version, table_help และ whoami จะรายงานสถานะของคลัสเตอร์และข้อมูลผู้ใช้
  • 🗂️ การจัดการโต๊ะ: สร้าง แสดงรายการ อธิบาย ปิดใช้งาน เปิดใช้งาน ลบ และแก้ไขตารางการสร้างและการปรับรูปร่างใหม่
  • ✏️ การจัดการข้อมูล: คำสั่ง put, get, delete, deleteall, truncate, count และ scan สามารถอ่านและเขียนค่าในเซลล์ได้
  • 🔁 Cluster การจำลองแบบ: add_peer, remove_peer, start_replication และ stop_replication ใช้สำหรับจัดการการจำลองข้อมูล
  • คุณลักษณะ TTL: Time To Live จะลบข้อมูลแถวในคอลัมน์แฟมิลีโดยอัตโนมัติหลังจากผ่านไปจำนวนวินาทีที่กำหนดไว้
  • 🤖 ระบบ AI ช่วย: ผู้ช่วย AI สร้างและอธิบายคำสั่งเชลล์ HBase จากข้อความแจ้งที่เป็นภาษาธรรมดา

คำสั่งเชลล์ของ HBase พร้อมตัวอย่างสำหรับตาราง ข้อมูล และการจำลองคลัสเตอร์

วิธีใช้งาน HBase โดยใช้คำสั่ง Shell และ Java API

หลังจากติดตั้ง HBase บน Hadoop สำเร็จแล้ว เราจะได้เชลล์แบบโต้ตอบเพื่อเรียกใช้คำสั่งต่างๆ และดำเนินการหลายอย่าง โดยใช้คำสั่งเหล่านี้ เราสามารถดำเนินการหลายอย่างกับตารางข้อมูล ซึ่งจะช่วยเพิ่มประสิทธิภาพในการจัดเก็บข้อมูลและเพิ่มความยืดหยุ่นในการโต้ตอบกับไคลเอ็นต์

เราสามารถโต้ตอบกับ HBase ได้สองวิธี:

  • โหมดเชลล์แบบโต้ตอบของ HBase และ
  • ตลอด Java API

ใน HBase โหมดเชลล์แบบโต้ตอบ (Interactive Shell Mode) ใช้สำหรับการโต้ตอบกับ HBase ในด้านการดำเนินการกับตาราง การจัดการตาราง และการสร้างแบบจำลองข้อมูล โดยใช้ Java โมเดล API ช่วยให้เราสามารถดำเนินการกับตารางและข้อมูลทุกประเภทใน HBase ได้ เราสามารถโต้ตอบกับ HBase ได้โดยใช้วิธีการทั้งสองนี้ ความแตกต่างเพียงอย่างเดียวระหว่างสองวิธีนี้คือ... Java API ใช้ Java โหมดการเขียนโค้ดเพื่อเชื่อมต่อกับ HBase ในขณะที่โหมดเชลล์จะใช้คำสั่งเชลล์ในการเชื่อมต่อกับ HBase

ก่อนที่เราจะดำเนินการต่อ ขอสรุปข้อมูลเบื้องต้นเกี่ยวกับ HBase สั้นๆ ดังนี้:

  • HBase ใช้ Hadoop HBase เป็นระบบจัดเก็บข้อมูลที่ใช้เก็บข้อมูลปริมาณมาก โดย HBase ประกอบด้วยมาสเตอร์เซิร์ฟเวอร์และรีจิสเตอร์เซิร์ฟเวอร์
  • ข้อมูลที่จะจัดเก็บใน HBase จะอยู่ในรูปแบบของภูมิภาค (regions) และภูมิภาคเหล่านี้จะถูกแบ่งย่อยและจัดเก็บไว้ในเซิร์ฟเวอร์ภูมิภาคหลายแห่ง
  • คำสั่งเชลล์เหล่านี้ช่วยให้โปรแกรมเมอร์สามารถกำหนดโครงสร้างตารางและดำเนินการกับข้อมูลได้โดยใช้การโต้ตอบในโหมดเชลล์อย่างสมบูรณ์
  • ไม่ว่าเราจะใช้คำสั่งใด คำสั่งนั้นก็จะสะท้อนให้เห็นในโมเดลข้อมูลของ HBase
  • เราใช้คำสั่งเชลล์ของ HBase ในตัวแปลสคริปต์ของระบบปฏิบัติการ เช่น เชลล์ Bash
  • Bash shell เป็นตัวแปลคำสั่งเริ่มต้นสำหรับระบบส่วนใหญ่ ลินุกซ์ และระบบปฏิบัติการ Unix
  • HBase เวอร์ชันขั้นสูงมีคำสั่งเชลล์ที่ใช้การอ้างอิงเชิงวัตถุแบบ JRuby สำหรับตาราง
  • ตัวแปรอ้างอิงตารางสามารถใช้เพื่อดำเนินการกับข้อมูลในโหมดเชลล์ของ HBase ได้

ตัวอย่างเช่น:

  • ในบทเรียนนี้ เราได้สร้างตารางขึ้นมา โดยที่ 'education' แทนชื่อตาราง และตรงกับชื่อคอลัมน์ “guru99”
  • ในบางคำสั่ง “guru99” นั้นเองอาจแทนชื่อตารางได้

คำสั่งทั่วไป

ใน HBase คำสั่งทั่วไปจะถูกแบ่งออกเป็นหมวดหมู่ดังต่อไปนี้:

  • สถานะ
  • เวอร์ชั่น
  • Table_help ( สแกน วาง รับ วาง ปิดการใช้งาน ฯลฯ )
  • ฉันเป็นใคร

ในการเข้าสู่คำสั่งเชลล์ของ HBase ขั้นแรกเราต้องเรียกใช้โค้ดตามที่ระบุไว้ด้านล่าง

hbase Shell

เมื่อเข้าสู่ HBase shell แล้ว เราสามารถเรียกใช้คำสั่ง shell ทั้งหมดที่กล่าวถึงด้านล่างได้ ด้วยความช่วยเหลือของคำสั่งเหล่านี้ เราสามารถดำเนินการกับตารางทุกประเภทในโหมด HBase shell ได้ พร้อมท์ shell แบบโต้ตอบจะปรากฏดังที่แสดงด้านล่าง:

หน้าต่างโต้ตอบเชลล์ของ HBase เปิดขึ้นด้วยคำสั่ง hbase shell

ให้เราดูคำสั่งเหล่านี้ทั้งหมดและการใช้งานทีละคำสั่งพร้อมตัวอย่าง

สถานะ

Syntax:status

คำสั่งนี้จะแสดงรายละเอียดเกี่ยวกับสถานะของระบบ เช่น จำนวนเซิร์ฟเวอร์ในคลัสเตอร์ จำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ และค่าโหลดเฉลี่ย นอกจากนี้ คุณยังสามารถส่งพารามิเตอร์เฉพาะเจาะจงได้ ขึ้นอยู่กับว่าคุณต้องการทราบรายละเอียดของสถานะระบบมากน้อยเพียงใด พารามิเตอร์สามารถเป็น 'summary', 'simple' หรือ 'detailed' โดยค่าเริ่มต้นจะเป็น "summary"

ด้านล่างนี้ เราได้แสดงวิธีการส่งพารามิเตอร์ต่างๆ ไปยังคำสั่งสถานะ หากเราสังเกตภาพหน้าจอด้านล่าง เราจะเข้าใจได้ดียิ่งขึ้น

hbase(main):001:0>status
hbase(main):002:0>status 'simple'
hbase(main):003:0>status 'summary'
hbase(main):004:0> status 'detailed'

ผลลัพธ์สถานะแสดงอยู่ด้านล่าง:

ผลลัพธ์จากคำสั่ง shell status ของ HBase แสดงจำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ เซิร์ฟเวอร์ที่หยุดทำงาน และภาระงานเฉลี่ย

เมื่อเรารันคำสั่งสถานะนี้ มันจะแสดงข้อมูลเกี่ยวกับจำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ เซิร์ฟเวอร์ที่เสีย และภาระงานเฉลี่ยของเซิร์ฟเวอร์ ในภาพหน้าจอนี้แสดงข้อมูล เช่น เซิร์ฟเวอร์ที่ใช้งานอยู่ 1 เครื่อง เซิร์ฟเวอร์ที่เสีย 1 เครื่อง และภาระงานเฉลี่ย 7.0000

เวอร์ชั่น

Syntax: version

ผลลัพธ์ของเวอร์ชันแสดงอยู่ด้านล่าง:

คำสั่ง `HBase shell version` แสดงเวอร์ชัน HBase ที่ติดตั้งไว้

  • คำสั่งนี้จะแสดงเวอร์ชัน HBase ที่ใช้งานอยู่ในปัจจุบันในโหมดคำสั่ง
  • หากคุณรันคำสั่ง version จะแสดงผลลัพธ์ดังที่แสดงด้านบน

ช่วยตาราง

Syntax:table_help

ผลลัพธ์จากคำสั่ง table_help แสดงอยู่ด้านล่าง:

ผลลัพธ์จาก HBase shell table_help แสดงรายการการใช้งานคำสั่ง create และ get_table

คำสั่งนี้จะแนะนำ:

  • คำสั่งอ้างอิงตารางคืออะไร และวิธีการใช้งาน
  • จะแสดงวิธีการใช้งานคำสั่งต่างๆ ของ HBase shell และไวยากรณ์ของคำสั่งเหล่านั้น
  • ในภาพหน้าจอข้างต้น แสดงไวยากรณ์ของคำสั่ง "create" และ "get_table" พร้อมวิธีการใช้งาน เราสามารถจัดการตารางผ่านคำสั่งเหล่านี้ได้หลังจากที่สร้างตารางใน HBase แล้ว
  • มันจะแสดงคำสั่งสำหรับการจัดการตาราง เช่น put, get และข้อมูลคำสั่งอื่นๆ ทั้งหมด

whoami

Syntax: Whoami

ผลลัพธ์จากคำสั่ง whoami แสดงอยู่ด้านล่าง:

คำสั่ง whoami ใน HBase shell จะแสดงผู้ใช้และกลุ่มปัจจุบัน

คำสั่ง “whoami” นี้ใช้สำหรับเรียกดูข้อมูลผู้ใช้ HBase ปัจจุบันจากคลัสเตอร์ HBase โดยจะแสดงข้อมูลต่างๆ เช่น:

  • กลุ่มต่างๆ ที่มีอยู่ใน HBase
  • ข้อมูลผู้ใช้ ตัวอย่างเช่น ในกรณีนี้ "hduser" หมายถึงชื่อผู้ใช้ตามที่แสดงในภาพหน้าจอ

TTL(Time To Live) – คุณสมบัติ

ใน HBase สามารถตั้งค่าคอลัมน์แฟมิลีให้มีค่าเวลาเป็นวินาทีโดยใช้ TTL ได้ HBase จะลบแถวโดยอัตโนมัติเมื่อถึงเวลาหมดอายุ คุณสมบัตินี้มีผลกับทุกเวอร์ชันของแถว แม้แต่เวอร์ชันปัจจุบันก็ตาม

เวลา TTL ที่เข้ารหัสใน HBase สำหรับแถวนั้นระบุเป็นเวลา UTC คุณลักษณะนี้ใช้กับคำสั่งการจัดการตาราง ความแตกต่างที่สำคัญระหว่างการจัดการ TTL และ TTL ของตระกูลคอลัมน์มีดังต่อไปนี้:

  • TTL ของเซลล์จะแสดงเป็นหน่วยมิลลิวินาทีแทนที่จะเป็นวินาที
  • ค่า TTL ของเซลล์ไม่สามารถยืดอายุการใช้งานที่มีประสิทธิภาพของเซลล์ให้เกินกว่าการตั้งค่า TTL ระดับ Column Family ได้

คำสั่งการจัดการตาราง

คำสั่งเหล่านี้จะช่วยให้นักโปรแกรมสามารถสร้างตารางและโครงสร้างตารางที่มีแถวและคอลัมน์ได้ คำสั่งการจัดการตารางมีดังต่อไปนี้:

  • สร้างบัญชีตัวแทน
  • รายการ
  • บรรยาย
  • ปิดการใช้งาน
  • ปิดการใช้งาน_ทั้งหมด
  • ทำให้สามารถ
  • Enable_all
  • หล่น
  • ดรอป_ทั้งหมด
  • แสดง_ตัวกรอง
  • เปลี่ยนแปลง
  • เปลี่ยนสถานะ

เรามาดูตัวอย่างการใช้งานคำสั่งต่างๆ ใน ​​HBase กัน

สร้างบัญชีตัวแทน

Syntax: create <tablename>, <columnfamilyname>

ตัวอย่าง:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

ผลลัพธ์ของคำสั่งสร้างแสดงอยู่ด้านล่าง:

คำสั่ง HBase shell create สร้างตาราง education โดยใช้ column family ชื่อ guru99

ตัวอย่างข้างต้นอธิบายวิธีการสร้างตารางใน HBase โดยใช้ชื่อที่ระบุตามข้อกำหนดสำหรับแต่ละตระกูลคอลัมน์ นอกจากนี้ เรายังสามารถส่งแอตทริบิวต์ระดับตารางบางอย่างเข้าไปได้ด้วย เพื่อตรวจสอบว่าตาราง 'education' ถูกสร้างขึ้นหรือไม่ เราใช้คำสั่ง "list" ด้านล่าง ดูเพิ่มเติม การสร้างตาราง HBase ด้วย Java และเปลือกหอย.

รายการ

Syntax:list

รายการผลลัพธ์แสดงอยู่ด้านล่าง:

คำสั่ง HBase shell list แสดงตารางที่มีอยู่แปดตารางใน HBase

  • คำสั่ง “list” จะแสดงตารางทั้งหมดที่มีอยู่หรือถูกสร้างขึ้นใน HBase
  • ผลลัพธ์ที่แสดงในภาพหน้าจอข้างต้นแสดงตารางที่มีอยู่แล้วใน HBase ในขณะนี้
  • ในภาพหน้าจอนี้ แสดงให้เห็นว่ามีตารางทั้งหมด 8 ตารางอยู่ใน HBase
  • เราสามารถกรองค่าผลลัพธ์จากตารางได้โดยการส่งพารามิเตอร์นิพจน์ปกติ (regular expression) ที่เป็นตัวเลือกเพิ่มเติม

บรรยาย

Syntax:describe <table name>
hbase(main):010:0>describe 'education'

ผลลัพธ์ที่ได้จากการอธิบายแสดงอยู่ด้านล่าง:

ผลลัพธ์จากคำสั่ง HBase shell describe แสดงรายละเอียดเกี่ยวกับกลุ่มคอลัมน์ในตาราง education

คำสั่งนี้อธิบายตารางที่มีชื่อ

  • ข้อมูลนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับตระกูลคอลัมน์ที่มีอยู่ในตารางที่กล่าวถึง
  • ในกรณีของเรา มันแสดงคำอธิบายของตาราง "การศึกษา"
  • ข้อมูลที่ได้จะประกอบด้วยชื่อตารางพร้อมกลุ่มคอลัมน์ ตัวกรองที่เกี่ยวข้อง เวอร์ชัน และรายละเอียดอื่นๆ เพิ่มเติม

ปิดการใช้งาน

Syntax: disable <tablename>
hbase(main):011:0>disable 'education'

ผลลัพธ์การปิดใช้งานแสดงอยู่ด้านล่าง:

คำสั่ง HBase shell disable จะทำให้ตาราง education ออฟไลน์

  • คำสั่งนี้จะเริ่มปิดใช้งานตารางที่ระบุชื่อไว้
  • หากต้องการลบหรือยกเลิกตาราง จะต้องปิดใช้งานตารางนั้นก่อน

ในภาพหน้าจอด้านบน เราได้ปิดใช้งานตารางข้อมูลการศึกษาแล้ว

ปิดการใช้งาน_ทั้งหมด

 Syntax: disable_all<"matching regex"
  • คำสั่งนี้จะปิดการใช้งานตารางทั้งหมดที่ตรงกับ regex ที่กำหนด
  • วิธีการใช้งานเหมือนกับคำสั่ง drop ทุกประการ (ยกเว้นการเพิ่ม regex สำหรับการจับคู่)
  • เมื่อปิดใช้งานตารางแล้ว ผู้ใช้จะสามารถลบตารางออกจาก HBase ได้
  • ก่อนที่จะลบหรือทิ้งping หากต้องการใช้งานตาราง ควรปิดใช้งานก่อน

ทำให้สามารถ

Syntax: enable <tablename>
hbase(main):012:0>enable 'education'

ผลลัพธ์การเปิดใช้งานแสดงอยู่ด้านล่าง:

คำสั่ง HBase shell enable จะเปิดใช้งานตารางการศึกษาที่ถูกปิดใช้งานอีกครั้ง

  • คำสั่งนี้จะเริ่มเปิดใช้งานตารางที่ระบุชื่อ
  • ไม่ว่าตารางใดจะถูกปิดใช้งาน หากต้องการกู้คืนให้กลับสู่สถานะเดิม เราสามารถใช้คำสั่งนี้ได้
  • หากตารางถูกปิดใช้งานในครั้งแรกและไม่ได้ถูกลบหรือยกเลิก และหากเราต้องการนำตารางที่ถูกปิดใช้งานนั้นกลับมาใช้ใหม่ เราจะต้องเปิดใช้งานตารางนั้นโดยใช้คำสั่งนี้
  • ในภาพหน้าจอด้านบน เรากำลังเปิดใช้งานตาราง "การศึกษา"

show_filters

Syntax: show_filters

ผลลัพธ์จากคำสั่ง show_filters แสดงอยู่ด้านล่าง:

ผลลัพธ์จากคำสั่ง `show_filters` ของ HBase shell แสดงรายการตัวกรอง HBase ที่มีอยู่

คำสั่งนี้จะแสดงตัวกรองทั้งหมดที่มีอยู่ใน HBase เช่น ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter เป็นต้น

หล่น

Syntax:drop <table name>
hbase(main):017:0>drop 'education'

ผลลัพธ์จากการทดสอบแสดงอยู่ด้านล่าง:

คำสั่ง HBase shell drop จะลบตาราง education ที่ถูกปิดใช้งาน

เราต้องพิจารณาประเด็นต่อไปนี้สำหรับคำสั่ง drop:

  • ในการลบตารางใน HBase เราต้องปิดใช้งานตารางนั้นก่อน
  • ในการลบตารางใน HBase เราต้องปิดใช้งานตารางนั้นก่อน
  • ดังนั้น ในการลบหรือยกเลิกตาราง ก่อนอื่นต้องปิดใช้งานตารางนั้นโดยใช้คำสั่ง disable
  • ในภาพหน้าจอด้านบน เรากำลังทำการวางping ตาราง “การศึกษา”
  • ก่อนดำเนินการคำสั่งนี้ จำเป็นต้องปิดใช้งานตาราง “education” ก่อน

drop_all

Syntax: drop_all<"regex">
  • คำสั่งนี้จะลบตารางทั้งหมดที่ตรงกับรูปแบบนิพจน์ทั่วไป (regex) ที่กำหนด
  • ต้องปิดใช้งานตารางก่อนจึงจะสามารถเรียกใช้คำสั่งนี้ได้ โดยใช้คำสั่ง disable_all
  • ตารางที่มีนิพจน์การจับคู่แบบ regex จะถูกลบออกจาก HBase

เปิดใช้งาน

Syntax: is_enabled 'education'

คำสั่งนี้จะตรวจสอบว่าตารางที่ระบุชื่อนั้นเปิดใช้งานอยู่หรือไม่ โดยปกติแล้ว มักจะมีความสับสนเล็กน้อยระหว่างการกระทำของคำสั่ง "enable" และ "is_enabled" ซึ่งเราจะอธิบายให้ชัดเจนในที่นี้:

  • สมมติว่าตารางหนึ่งถูกปิดใช้งาน หากต้องการใช้งานตารางนั้น เราต้องเปิดใช้งานโดยใช้คำสั่ง enable
  • คำสั่ง is_enabled จะตรวจสอบว่าตารางนั้นเปิดใช้งานอยู่หรือไม่

เปลี่ยนแปลง

Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5

คำสั่งนี้จะเปลี่ยนสกีมาตระกูลคอลัมน์ เพื่อให้เข้าใจอย่างชัดเจนว่ามันทำอะไร เราได้อธิบายไว้ที่นี่พร้อมตัวอย่าง

ตัวอย่าง: ในตัวอย่างเหล่านี้ เราจะทำการแก้ไขตารางและคอลัมน์โดยใช้คำสั่ง alter เราจะทำการดำเนินการต่างๆ เช่น:

  • การแก้ไขชื่อสกุลแบบคอลัมน์เดียวและหลายคอลัมน์
  • การลบชื่อตระกูลคอลัมน์ออกจากตาราง
  • การดำเนินการอื่นๆ อีกหลายอย่างที่ใช้คุณลักษณะขอบเขตกับตาราง

เพื่อเปลี่ยนหรือเพิ่มกลุ่มคอลัมน์ 'guru99_1' ในตาราง 'education' จากค่าปัจจุบัน โดยคงไว้ซึ่งเวอร์ชันเซลล์สูงสุด 5 เซลล์ ในที่นี้ "education" คือชื่อตารางที่สร้างขึ้นพร้อมกับชื่อคอลัมน์ "guru99" ก่อนหน้านี้ เรากำลังพยายามเปลี่ยนรูปแบบกลุ่มคอลัมน์จาก guru99 เป็น guru99_1 โดยใช้คำสั่ง alter ดังแสดงด้านล่าง:

คำสั่ง alter ในเชลล์ HBase จะเปลี่ยนตระกูลคอลัมน์ของตาราง education เป็น guru99_1

hbase> alter 'education', NAME='guru99_1', VERSIONS=>5

คุณสามารถใช้คำสั่ง alter กับกลุ่มคอลัมน์หลายกลุ่มได้เช่นกัน ตัวอย่างเช่น เราจะกำหนดคอลัมน์ใหม่สองคอลัมน์สำหรับตาราง "education" ที่มีอยู่ของเรา ดังแสดงด้านล่าง:

คำสั่ง alter ใน HBase shell จะเพิ่ม column families ใหม่สองรายการคือ guru99_2 และ guru99_3

 hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
  • เราสามารถเปลี่ยนแปลงโครงสร้างคอลัมน์ได้มากกว่าหนึ่งคอลัมน์พร้อมกันโดยใช้คำสั่งนี้
  • ตามที่แสดงในภาพหน้าจอข้างต้น guru99_2 และ guru99_3 คือชื่อคอลัมน์ใหม่สองชื่อที่เรากำหนดให้กับตาราง education
  • เราสามารถดูวิธีการใช้คำสั่งนี้ได้จากภาพหน้าจอที่แสดงก่อนหน้านี้

ในขั้นตอนนี้ เราจะมาดูวิธีการลบกลุ่มคอลัมน์ออกจากตาราง ในการลบกลุ่มคอลัมน์ 'f1' ในตาราง 'education' ให้ใช้คำสั่งใดคำสั่งหนึ่งด้านล่างนี้ ผลลัพธ์จะแสดงอยู่ในภาพหน้าจอต่อไปนี้:

คำสั่ง alter ใน HBase shell สำหรับลบ column family จากตาราง education

hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'

ในคำสั่งนี้ เราพยายามลบคอลัมน์ชื่อ guru99_1 ที่เราสร้างไว้ก่อนหน้านี้ในขั้นตอนแรก ดังที่แสดงในภาพหน้าจอด้านล่าง จะแสดงสองขั้นตอน ได้แก่ วิธีการเปลี่ยนแอตทริบิวต์ขอบเขตตาราง และวิธีการลบแอตทริบิวต์ขอบเขตตาราง

คำสั่ง alter ในเชลล์ HBase กำหนดค่าแอตทริบิวต์ MAX_FILESIZE ในระดับตาราง

Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'

ขั้นตอนที่ 1) คุณสามารถเปลี่ยนค่าแอตทริบิวต์ระดับตาราง เช่น MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH เป็นต้น โดยสามารถใส่ค่าเหล่านี้ไว้ท้ายสุดได้ ตัวอย่างเช่น หากต้องการเปลี่ยนขนาดสูงสุดของพื้นที่จัดเก็บข้อมูลเป็น 128MB หรือค่าหน่วยความจำอื่นๆ เราจะใช้คำสั่งนี้

การใช้งาน:

  • เราสามารถใช้ MAX_FILESIZE ร่วมกับตารางเป็นแอตทริบิวต์ขอบเขตได้ดังที่กล่าวมาข้างต้น
  • ค่า MAX_FILESIZE นั้นแสดงเป็นหน่วยหน่วยความจำ (ไบต์)

หมายเหตุ: ขอบเขตตาราง MAX_FILESIZE จะถูกกำหนดโดยแอตทริบิวต์บางอย่างที่มีอยู่ใน HBase MAX_FILESIZE ก็จัดอยู่ในกลุ่มแอตทริบิวต์ขอบเขตตารางเช่นกัน

ขั้นตอนที่ 2) คุณยังสามารถลบแอตทริบิวต์ระดับตารางโดยใช้เมธอด table_att_unset ได้ ดูคำสั่งด้านล่าง:

alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
  • ภาพหน้าจอข้างต้นแสดงชื่อตารางที่แก้ไขแล้ว พร้อมด้วยแอตทริบิวต์ขอบเขต
  • เมธอด `table_att_unset` ใช้สำหรับลบค่าแอตทริบิวต์ที่มีอยู่ในตาราง
  • ในกรณีที่สอง เรากำลังยกเลิกการตั้งค่าแอตทริบิวต์ MAX_FILESIZE
  • หลังจากดำเนินการคำสั่งเสร็จสิ้น ระบบจะลบค่าแอตทริบิวต์ MAX_FILESIZE ออกจากตาราง “education”

alter_status

 Syntax: alter_status 'education'

ผลลัพธ์ของคำสั่ง alter_status แสดงอยู่ด้านล่าง:

คำสั่ง alter_status ใน HBase shell แสดงว่ามีเพียงหนึ่งในภูมิภาคที่ได้รับการอัปเดตแล้ว

  • คำสั่งนี้ใช้ตรวจสอบสถานะของคำสั่ง alter ได้
  • ระบุจำนวนภูมิภาคของตารางที่ได้รับการอัปเดตโครงสร้างข้อมูล คุณต้องระบุชื่อตาราง
  • ในภาพหน้าจอด้านบน แสดงว่าอัปเดตไปแล้ว 1/1 ภูมิภาค หมายความว่าได้อัปเดตไปแล้วหนึ่งภูมิภาค หลังจากนั้น หากสำเร็จ จะแสดงข้อความว่า “เสร็จสิ้น”

คำสั่งการจัดการข้อมูล

คำสั่งเหล่านี้ใช้กับตารางเพื่อจัดการข้อมูล เช่น การใส่ข้อมูลลงในตาราง การดึงข้อมูลจากตาราง และการลบโครงสร้างตาราง เป็นต้น คำสั่งที่อยู่ในกลุ่มนี้ได้แก่:

  • นับ
  • ใส่
  • เข้ามา
  • ลบ
  • ลบทั้งหมด
  • ตัด
  • สแกน

เรามาดูตัวอย่างการใช้งานคำสั่งเหล่านี้กัน ดูเพิ่มเติมได้ที่นี่ การอ่านและการเขียนข้อมูล HBase.

นับ

Syntax: count <'tablename'>, CACHE =>1000
  • คำสั่งนี้จะดึงจำนวนแถวในตาราง ค่าที่ส่งคืนโดยคำสั่งนี้คือจำนวนแถว
  • โดยค่าเริ่มต้น ระบบจะแสดงจำนวนปัจจุบันทุกๆ 1000 แถว
  • สามารถระบุช่วงเวลาการนับได้ตามต้องการ
  • ขนาดแคชเริ่มต้นคือ 10 แถว
  • คำสั่งนับจำนวนจะทำงานได้เร็วขึ้นเมื่อตั้งค่าแคชอย่างถูกต้อง

ตัวอย่าง:

hbase> count 'guru99', CACHE=>1000

ผลลัพธ์การนับแสดงอยู่ด้านล่าง:

คำสั่ง `count` ในเชลล์ HBase จะแสดงจำนวนแถวของตาราง `guru99`

ตัวอย่างนี้จะดึงข้อมูล 1000 แถวต่อครั้งจากตาราง “guru99” เราสามารถลดค่าแคชลงได้หากตารางมีจำนวนแถวมากกว่านี้ แต่โดยค่าเริ่มต้นจะดึงข้อมูลทีละแถว

hbase>count 'guru99', INTERVAL => 100000
hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000

สมมติว่าตาราง “guru99” มีการอ้างอิงถึงตารางอื่น เช่น ตาราง g เราสามารถใช้คำสั่ง count กับการอ้างอิงถึงตารางนั้นได้ ดังนี้:

hbase>g.count INTERVAL=>100000
hbase>g.count INTERVAL=>10, CACHE=>1000

ใส่

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

คำสั่งนี้ใช้สำหรับสิ่งต่อไปนี้:

  • มันจะใส่ 'ค่า' ของเซลล์ไว้ที่ตารางหรือแถวหรือคอลัมน์ที่กำหนดหรือระบุ
  • ระบบจะทำการประสานการประทับเวลาตามความเหมาะสม (ถ้าต้องการ)

ตัวอย่าง: ในที่นี้ เรากำลังใส่ค่าลงในตาราง “guru99” ในแถว r1 และคอลัมน์ c1

hbase> put 'guru99', 'r1', 'c1', 'value', 10

เราได้ใส่ค่าสามค่า ได้แก่ 10, 15 และ 30 ลงในตาราง “guru99” ดังที่แสดงในภาพหน้าจอด้านล่าง

คำสั่ง HBase shell put แทรกค่า 10, 15 และ 30 ลงในตาราง guru99

สมมติว่าตาราง “guru99” มีการอ้างอิงถึงตารางอื่น เช่น ตาราง g เราสามารถเรียกใช้คำสั่งกับตารางที่อ้างอิงถึงนั้นได้ ดังนี้:

hbase> g.put 'guru99', 'r1', 'c1', 'value', 10

หลังจากใส่ค่าลงใน “guru99” แล้ว ผลลัพธ์จะแสดงดังภาพหน้าจอข้างต้น เพื่อตรวจสอบว่าค่าที่ป้อนเข้าไปนั้นถูกแทรกเข้าไปในตารางอย่างถูกต้องหรือไม่ เราใช้คำสั่ง “scan” ในภาพหน้าจอด้านล่าง เราจะเห็นว่าค่าต่างๆ ถูกแทรกเข้าไปอย่างถูกต้องแล้ว

ผลลัพธ์จากการสแกนเชลล์ HBase ยืนยันค่าที่ถูกแทรกเข้าไปในตาราง guru99

Code ตัวอย่าง: สำหรับฝึกฝน

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}
put 'guru99', 'r1', 'Edu:c1', 'value', 10
put 'guru99', 'r1', 'Edu:c1', 'value', 15
put 'guru99', 'r1', 'Edu:c1', 'value', 30

จากโค้ดตัวอย่าง เรากำลังทำสิ่งเหล่านี้:

  • ในที่นี้ เรากำลังสร้างตารางชื่อ 'guru99' โดยตั้งชื่อคอลัมน์ว่า “Edu”
  • โดยใช้คำสั่ง “put” เราจะใส่ค่าลงในแถวชื่อ r1 ในคอลัมน์ “Edu” ในตาราง “guru99”

เข้ามา

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

ที่นี่, รวมถึงช่วงเวลา (TIMESTAMP), เวลาประทับ (TIMESTAMP), เวอร์ชัน (VERSIONS) และตัวกรอง (FILTERS) โดยใช้คำสั่งนี้ คุณจะได้รับเนื้อหาของแถวหรือเซลล์ในตาราง นอกจากนี้ คุณยังสามารถเพิ่มพารามิเตอร์เพิ่มเติม เช่น เวลาประทับ (TIMESTAMP), เวลาประทับ (TIMERANGE), เวอร์ชัน (VERSIONS), ตัวกรอง (FILTERS) เป็นต้น เพื่อรับเนื้อหาของแถวหรือเซลล์ที่ต้องการได้

คำสั่ง `get output` ด้านล่างจะส่งคืนค่าแถว r1 และคอลัมน์ c1:

คำสั่ง HBase shell get ส่งคืนแถว r1 และคอลัมน์ c1 จากตาราง guru99

ตัวอย่าง:-

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

สำหรับตาราง “guru99” ค่าในแถว r1 และคอลัมน์ c1 จะแสดงโดยใช้คำสั่งนี้ ดังที่แสดงในภาพหน้าจอข้างต้น

hbase> get 'guru99', 'r1'

สำหรับตาราง “guru99” ค่าในแถว r1 จะแสดงโดยใช้คำสั่งนี้

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

สำหรับตาราง “guru99” ค่าในแถว r1 ในช่วงเวลา ts1 ถึง ts2 จะถูกแสดงโดยใช้คำสั่งนี้

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

สำหรับตาราง “guru99” ค่าในแถว r1 และกลุ่มคอลัมน์ c1, c2 และ c3 จะถูกแสดงโดยใช้คำสั่งนี้

ลบ

Syntax:delete <'tablename'>,<'row name'>,<'column name'>
  • คำสั่งนี้จะลบค่าในเซลล์ของแถวหรือคอลัมน์ที่กำหนดไว้ในตาราง
  • คำสั่งลบจะต้องตรงกับพิกัดของเซลล์ที่ถูกลบอย่างแม่นยำ
  • เมื่อทำการสแกน การลบเซลล์จะลบค่าเวอร์ชันเก่าออกไปด้วย

ตัวอย่าง: คำสั่งลบด้านล่างนี้จะลบเซลล์ r1 และ c1 ออกจากตาราง guru99:

คำสั่งลบในเชลล์ HBase จะลบเซลล์ r1 c1 ออกจากตาราง guru99

hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
  • คำสั่งข้างต้นจะลบแถว r1 จากกลุ่มคอลัมน์ c1 ในตาราง “guru99”
  • สมมติว่าตาราง “guru99” มีการอ้างอิงตารางบางอย่าง เช่น g
  • เราสามารถรันคำสั่งบนการอ้างอิงตารางได้เช่นกัน เช่น hbase> g.delete 'guru99', 'r1', 'c1'

ลบทั้งหมด

Syntax: deleteall <'tablename'>, <'rowname'>
  • คำสั่งนี้จะลบเซลล์ทั้งหมดในแถวที่กำหนด
  • เราสามารถกำหนดชื่อคอลัมน์และเวลาประทับในไวยากรณ์ได้ตามต้องการ

ตัวอย่าง: คำสั่ง deleteall ด้านล่างนี้จะลบทุกเซลล์ในแถว r1:

คำสั่ง deleteall ใน HBase shell จะลบเซลล์ทั้งหมดในแถว r1 ของตาราง guru99

hbase>deleteall 'guru99', 'r1', 'c1'

คำสั่งนี้จะลบแถวและคอลัมน์ทั้งหมดที่มีอยู่ในตาราง เราสามารถระบุชื่อคอลัมน์ได้ด้วย (ถ้าต้องการ)

ตัด

Syntax:  truncate <tablename>

คำสั่ง truncate ด้านล่างจะล้างตารางทั้งหมดในขณะที่ยังคงรักษาข้อมูลบางส่วนไว้ping โครงสร้างของมัน:

การปิดใช้งานคำสั่ง truncate ใน HBase shell, droppingและสร้างตาราง guru99 ขึ้นมาใหม่

หลังจากทำการลบข้อมูลทั้งหมดในตาราง HBase แล้ว โครงสร้างตารางจะยังคงอยู่ แต่ข้อมูลในตารางจะหายไป คำสั่งนี้ทำหน้าที่ 3 อย่าง ดังที่ระบุไว้ด้านล่าง:

  • ปิดใช้งานตารางหากมีอยู่แล้ว
  • ลบตารางหากมีอยู่แล้ว
  • สร้างตารางที่กล่าวถึงขึ้นมาใหม่

สแกน

Syntax: scan <'tablename'>, {Optional parameters}

คำสั่งนี้จะสแกนตารางทั้งหมดและแสดงเนื้อหาของตาราง

  • เราสามารถส่งข้อกำหนดเพิ่มเติมหลายรายการไปยังคำสั่งสแกนนี้เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับตารางที่มีอยู่ในระบบ
  • ข้อมูลจำเพาะของเครื่องสแกนอาจรวมถึงคุณลักษณะต่อไปนี้หนึ่งรายการหรือมากกว่าหนึ่งรายการ
  • พารามิเตอร์เหล่านี้ได้แก่ TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW และ STOPROW
scan 'guru99'

ผลการสแกนแสดงอยู่ด้านล่าง:

คำสั่ง shell scan ของ HBase แสดงแถว r1, r2 และ r3 ของตาราง guru99

ในภาพหน้าจอด้านบน:

  • ภาพแสดงตาราง “guru99” พร้อมชื่อคอลัมน์และค่าต่างๆ
  • ประกอบด้วยค่าแถวสามค่า ได้แก่ r1, r2 และ r3 สำหรับค่าคอลัมน์เดียวคือ c1
  • โปรแกรมนี้จะแสดงค่าที่เกี่ยวข้องกับแต่ละแถว

ตัวอย่าง: การใช้งานคำสั่ง scan ในรูปแบบต่างๆ:

คำสั่ง การใช้
สแกน '.META.', {COLUMNS => 'info:regioninfo'} โปรแกรมนี้จะแสดงข้อมูลเมตาที่เกี่ยวข้องกับคอลัมน์ทั้งหมดที่มีอยู่ในตารางใน HBase
สแกน 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} โปรแกรมนี้แสดงเนื้อหาของตาราง guru99 พร้อมด้วยกลุ่มคอลัมน์ c1 และ c2 โดยจำกัดค่าไว้ที่ 10
สแกน 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} โค้ดนี้แสดงเนื้อหาของ guru99 โดยใช้ชื่อคอลัมน์ c1 พร้อมค่าที่อยู่ระหว่างช่วงเวลาที่ระบุไว้ในแอตทริบิวต์ value
สแกน 'guru99', {RAW => true, VERSIONS =>10} ในคำสั่งนี้ RAW=> true จะให้คุณสมบัติขั้นสูง เช่น การแสดงค่าเซลล์ทั้งหมดที่มีอยู่ในตาราง guru99

Code ตัวอย่าง: ขั้นแรก สร้างตารางและใส่ค่าลงในตาราง ข้อมูลที่ป้อนจะแสดงอยู่ในภาพหน้าจอด้านล่าง:

ป้อนข้อมูลลงในเชลล์ HBase เพื่อสร้างตาราง guru99 และแทรกค่าเวอร์ชันก่อนทำการสแกนแบบดิบ

create 'guru99', {NAME=>'e', VERSIONS=>2147483647}
put 'guru99', 'r1', 'e:c1', 'value', 10
put 'guru99', 'r1', 'e:c1', 'value', 12
put 'guru99', 'r1', 'e:c1', 'value', 14
delete 'guru99', 'r1', 'e:c1', 11

ถ้าเรารันคำสั่งสแกน:

Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}

โปรแกรมจะแสดงผลลัพธ์ดังที่แสดงด้านล่าง:

ผลลัพธ์การสแกนแบบดิบของ HBase shell แสดงเซลล์หลายเวอร์ชัน รวมถึงค่าที่ถูกลบไปแล้ว

ข้อมูลที่แสดงในภาพหน้าจอข้างต้นมีดังต่อไปนี้:

  • กำลังสแกนตาราง guru99 ด้วยแอตทริบิวต์ RAW=>true, VERSIONS=>1000
  • แสดงแถวพร้อมกลุ่มคอลัมน์และค่าต่างๆ
  • ในแถวที่สาม ค่าที่แสดงคือค่าที่ถูกลบออกจากคอลัมน์นั้น
  • ผลลัพธ์ที่แสดงออกมาเป็นแบบสุ่ม ไม่สามารถเรียงลำดับเดียวกับค่าที่เราป้อนลงในตารางได้

Cluster คำสั่งการจำลองแบบ

  • คำสั่งเหล่านี้ใช้งานได้ในโหมดการตั้งค่าคลัสเตอร์ของ HBase
  • คำสั่งเหล่านี้โดยทั่วไปใช้สำหรับเพิ่มและลบโหนดในคลัสเตอร์ รวมถึงเริ่มและหยุดการจำลองข้อมูล
คำสั่ง ฟังก์ชั่น
add_peer เพิ่มโหนดลงในคลัสเตอร์เพื่อทำการจำลองข้อมูล
hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod
Remove_peer หยุดสตรีมการจำลองข้อมูลที่กำหนดไว้และลบข้อมูลเมตาทั้งหมดเกี่ยวกับคู่ค้า
hbase> Remove_peer '1'
start_replication เริ่มการทำงานใหม่ของฟังก์ชันการจำลองข้อมูลทั้งหมด
hbase> start_replication
stop_replication หยุดการทำงานของฟังก์ชันการจำลองข้อมูลทั้งหมด
hbase>stop_replication

คำถามที่พบบ่อย

พิมพ์ exit หรือ quit แล้วกด Enter เพื่อออกจากเชลล์ HBase แบบโต้ตอบและกลับไปยังพรอมต์ของระบบปฏิบัติการ คุณสามารถเปิดเชลล์ได้โดยใช้คำสั่ง hbase shell ทั้ง exit และ quit ไม่ได้หยุดบริการ HBase แต่จะยุติเซสชันเชลล์เท่านั้น

ใช่แล้ว คุณสามารถส่งคำสั่งผ่านท่อ (pipe commands) โดยไม่ต้องมีการโต้ตอบ เช่น `echo “list” | hbase shell` หรือเรียกใช้ไฟล์ที่บันทึกไว้ด้วย `hbase shell script.txt` เนื่องจากเชลล์นี้ใช้ JRuby เป็นพื้นฐาน คุณจึงสามารถฝังตรรกะและลูปของ Ruby ไว้ในไฟล์สคริปต์ `.rb` ได้ด้วย

เชลล์คือพรอมต์ JRuby แบบโต้ตอบสำหรับคำสั่งด้วยตนเองและการจัดการอย่างรวดเร็ว Java API ซึ่งใช้การเชื่อมต่อ การจัดการ และตาราง มีไว้สำหรับแอปพลิเคชันที่สร้างตารางและอ่านหรือเขียนข้อมูลโดยใช้โปรแกรม ทั้งสองแบบเข้าถึงคลัสเตอร์และข้อมูล HBase เดียวกัน

ข้อผิดพลาด “ตารางมีอยู่แล้ว” จะปรากฏขึ้นเมื่อสร้างตารางซ้ำกับชื่อที่มีอยู่ และข้อผิดพลาด “ตารางไม่ได้ถูกปิดใช้งาน” จะปรากฏขึ้นเมื่อคุณลบหรือแก้ไขตารางโดยไม่ปิดใช้งานก่อน ให้ใช้คำสั่ง disable 'table' ก่อนลบหรือแก้ไข และใช้คำสั่ง exists 'table' เพื่อตรวจสอบชื่อตารางก่อนสร้าง

คอลัมน์แฟมิลีของ HBase จะเก็บเวอร์ชันที่มีการประทับเวลาไว้ในจำนวนจำกัดต่อเซลล์ โดยในอดีตจะมีสามเวอร์ชัน และในเวอร์ชันใหม่กว่าจะมีหนึ่งเวอร์ชัน สามารถกำหนดจำนวนเวอร์ชันได้ด้วยคำสั่ง VERSIONS ในขณะสร้างหรือแก้ไขข้อมูล และขอเวอร์ชันเก่ากว่าได้โดยใช้ {VERSIONS => n} ในคำสั่ง get หรือ scan

ตัวแปรอ้างอิงตารางเป็นอ็อบเจ็กต์เชลล์ที่ส่งคืนโดย g = get_table 'guru99' จากนั้นคุณสามารถเรียกใช้เมธอดต่างๆ บนตัวแปรนี้ได้ เช่น g.put, g.get หรือ g.count แทนที่จะพิมพ์ชื่อตารางซ้ำๆ นี่เป็นทางลัดที่สะดวกแบบ JRuby ในเชลล์ HBase

ระบบช่วยเขียนโค้ด AI และโมเดลภาษาขนาดใหญ่จะสร้างคำสั่งเชลล์ HBase จากคำขอที่เป็นภาษาธรรมดา อธิบายตัวเลือกที่ไม่คุ้นเคย เช่น ตัวกรองการสแกนหรือ TTL และช่วยแก้ไขข้อผิดพลาด นอกจากนี้ การเรียนรู้ของเครื่องยังวิเคราะห์เมตริกของคลัสเตอร์เพื่อเป็นแนวทางในการปรับแต่งการจำลองแบบและภูมิภาค แม้ว่าวิศวกรควรตรวจสอบคำสั่งแต่ละคำสั่งอีกครั้งก็ตาม

ใช่. นักบิน GitHub แนะนำคำสั่ง shell ของ HBase และสคริปต์ JRuby จากข้อความสั้นๆ รวมถึงตัวอย่างคำสั่ง create, put, scan และ alter Revตรวจสอบผลลัพธ์เพื่อให้แน่ใจว่าชื่อตาราง ตระกูลคอลัมน์ และไวยากรณ์ เช่น VERSIONS ถูกต้อง ก่อนที่จะเรียกใช้บนคลัสเตอร์จริง

สรุปโพสต์นี้ด้วย: