วิธีการติดตั้ง HBase บน Ubuntu: คำแนะนำทีละขั้นตอน
⚡ สรุปอย่างชาญฉลาด
การติดตั้ง HBase บน Ubuntu โปรแกรมนี้ทำงานในสามโหมด ได้แก่ โหมดสแตนด์อโลน โหมดเสมือนกระจาย และโหมดกระจายเต็มรูปแบบ โดยครอบคลุมวิธีการดาวน์โหลดไฟล์ tarball ของเวอร์ชันที่เผยแพร่ การแก้ไขไฟล์ hbase-env.sh และ hbase-site.xml การเริ่มต้น daemon และการแก้ไขข้อผิดพลาดในการเริ่มต้นระบบทั่วไป

Apache HBase เป็นระบบฐานข้อมูลแบบกระจายศูนย์ ฐานข้อมูลแบบคอลัมน์ ซึ่งทำงานอยู่บนระบบไฟล์แบบกระจายของ Hadoop (HDFS) ก่อนเริ่มต้น โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้งระบบที่รองรับแล้ว Java ติดตั้งรันไทม์และตั้งค่า JAVA_HOME แล้ว โหมดจำลองการกระจายและโหมดกระจายเต็มรูปแบบยังต้องการรันไทม์ที่ใช้งานได้ด้วย Hadoop การติดตั้ง
โหมดการติดตั้ง Apache HBase
Apache HBase สามารถติดตั้งได้สามโหมด คุณสมบัติของโหมดเหล่านี้มีการกล่าวถึงด้านล่าง
1) การติดตั้งโหมดสแตนด์อโลน (ไม่ต้องพึ่งพาระบบ Hadoop)
- นี่คือโหมดเริ่มต้นของ HBase
- โปรแกรมนี้ทำงานกับระบบไฟล์ในเครื่อง
- มันไม่ได้ใช้ Hadoop HDFS.
- เฉพาะเดมอน HMaster เท่านั้นที่สามารถทำงานได้
- ไม่แนะนำให้ใช้ในสภาพแวดล้อมการผลิต
- ทำงานใน JVM เดียว
2) การติดตั้งโหมด Pseudo-Distributed (ระบบ Hadoop โหนดเดียว + การติดตั้ง HBase)
- มันทำงาน Hadoop HDFS.
- โปรแกรมเบื้องหลังทั้งหมดทำงานบนโหนดเดียว
- เหมาะสำหรับสภาพแวดล้อมการผลิต
3) การติดตั้งในโหมดกระจายอย่างสมบูรณ์ (สภาพแวดล้อม Hadoop แบบหลายโหนด + การติดตั้ง HBase)
- มันทำงาน Hadoop HDFS.
- โปรแกรมเบื้องหลังทั้งหมดทำงานอยู่บนทุกโหนดในคลัสเตอร์
- แนะนำเป็นอย่างยิ่งสำหรับสภาพแวดล้อมการผลิต
สำหรับวิธีการติดตั้ง Hadoop โปรดดูที่นี่ คู่มือการติดตั้ง Hadoop.
ภาพหน้าจอที่แสดงด้านล่างใช้ HBase เวอร์ชัน 1.1.2 เวอร์ชันเสถียรในปัจจุบันคือ HBase 2.5.x และ 2.6.x (Java (8 หรือ 11) แต่ขั้นตอนการติดตั้งและไฟล์การกำหนดค่าโดยพื้นฐานแล้วยังคงเหมือนเดิม
วิธีดาวน์โหลดไฟล์ HBase tar เวอร์ชันเสถียร
ขั้นตอนที่ 1) ไปที่ หน้าดาวน์โหลด Apache HBase อย่างเป็นทางการ เพื่อดาวน์โหลด HBase ระบบจะเปิดหน้าเว็บดาวน์โหลดดังที่แสดงด้านล่าง
ขั้นตอนที่ 2) เลือกเวอร์ชันเสถียรตามที่แสดงด้านล่าง คือ HBase เวอร์ชัน 1.1.2
ขั้นตอนที่ 3) คลิกที่ hbase-1.1.2-bin.tar.gz ระบบจะดาวน์โหลดไฟล์ tar จากนั้นคัดลอกไฟล์ tar ไปยังตำแหน่งที่จะติดตั้งโปรแกรม
วิธีการติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน
นี่คือขั้นตอนการติดตั้ง HBase ในโหมดสแตนด์อโลนแบบทีละขั้นตอน Ubuntu:
ขั้นตอนที่ 1) ทำตามคำสั่งด้านล่าง วางไฟล์ hbase-1.1.2-bin.tar.gz ไว้ใน /home/hduser
ขั้นตอนที่ 2) แตกไฟล์โดยใช้คำสั่ง `$tar -xvf hbase-1.1.2-bin.tar.gz` คำสั่งนี้จะแตกไฟล์และสร้างโฟลเดอร์ hbase-1.1.2 ในตำแหน่ง `/home/hduser`
ขั้นตอนที่ 3) เปิดไฟล์ hbase-env.sh ดังตัวอย่างด้านล่าง และระบุพาธ JAVA_HOME ในช่องตำแหน่งที่ตั้ง ดังที่แสดงด้านล่าง
ขั้นตอนที่ 4) เปิดไฟล์ ~/.bashrc และระบุพาธ HBASE_HOME ดังที่แสดงด้านล่าง
export HBASE_HOME=/home/hduser/hbase-1.1.1 export PATH= $PATH:$HBASE_HOME/bin
ไฟล์ ~/.bashrc ที่ได้รับการอัปเดตโดยมีรายการ HBASE_HOME อยู่ด้านล่าง
ขั้นตอนที่ 5) เพิ่มคุณสมบัติในไฟล์ เปิดไฟล์ hbase-site.xml และใส่คุณสมบัติต่อไปนี้ลงในไฟล์
hduser@ubuntu$ gedit ไฟล์ hbase-site.xml (โค้ดตามด้านล่าง)
<property> <name>hbase.rootdir</name> <value>file:///home/hduser/HBASE/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hduser/HBASE/zookeeper</value> </property>
ไฟล์ hbase-site.xml เปิดขึ้นใน gedit แสดงอยู่ด้านล่าง
ในที่นี้เราได้กำหนดคุณสมบัติสองอย่างไว้ดังนี้:
- หนึ่งสำหรับไดเร็กทอรีรากของ HBase และ
- อันที่สองสำหรับไดเร็กทอรีข้อมูลที่สอดคล้องกับ ZooKeeper.
กิจกรรมทั้งหมดของ HMaster และ ZooKeeper ชี้ไปยังไฟล์ hbase-site.xml นี้
ขั้นตอนที่ 6) ระบุที่อยู่ IP เปิดไฟล์ hosts ที่อยู่ในไดเร็กทอรี /etc และระบุที่อยู่ IP ตามที่แสดงด้านล่าง
ขั้นตอนที่ 7) ตอนนี้ให้รันไฟล์ start-hbase.sh ในตำแหน่ง hbase-1.1.1/bin ตามที่แสดงด้านล่าง จากนั้นคุณสามารถตรวจสอบด้วยคำสั่ง jps เพื่อดูว่า HMaster กำลังทำงานอยู่หรือไม่
ขั้นตอนที่ 8) เริ่มใช้งาน HBase Shell สามารถเริ่มใช้งาน HBase Shell ได้โดยใช้คำสั่งต่อไปนี้ เปลือก hbase พิมพ์คำสั่งนี้ แล้วมันจะเข้าสู่โหมดเชลล์แบบโต้ตอบดังที่แสดงในภาพหน้าจอด้านล่าง เมื่อเข้าสู่โหมดเชลล์แล้ว เราสามารถดำเนินการคำสั่งต่างๆ ได้ทุกประเภท
โหมดสแตนด์อโลนไม่ต้องการ Hadoop daemons เพื่อเริ่มทำงาน HBase สามารถทำงานได้อย่างอิสระ
โหมดการติดตั้งแบบกระจาย HBase Pseudo
นี่เป็นอีกวิธีหนึ่งในการติดตั้ง Apache HBase ซึ่งเรียกว่าโหมดการติดตั้งแบบกระจายเสมือน (Pseudo Distributed mode) ขั้นตอนการติดตั้ง HBase ผ่านโหมดกระจายเสมือนมีดังต่อไปนี้
ขั้นตอนที่ 1) วางไฟล์ hbase-1.1.2-bin.tar.gz ไว้ใน /home/hduser
ขั้นตอนที่ 2) แตกไฟล์โดยใช้คำสั่ง `$tar -xvf hbase-1.1.2-bin.tar.gz` คำสั่งนี้จะแตกไฟล์และสร้างโฟลเดอร์ hbase-1.1.2 ในตำแหน่ง `/home/hduser`
ขั้นตอนที่ 3) เปิดไฟล์ hbase-env.sh ดังตัวอย่างด้านล่าง ระบุพาธ JAVA_HOME และพาธของ Region Server ในช่องตำแหน่ง แล้วส่งออกคำสั่งดังที่แสดงด้านล่าง
ขั้นตอนที่ 4) ในขั้นตอนนี้ เราจะเปิดไฟล์ ~/.bashrc และระบุพาธ HBASE_HOME ตามที่แสดงในภาพหน้าจอด้านล่าง
ขั้นตอนที่ 5) เปิดไฟล์ hbase-site.xml และระบุคุณสมบัติต่อไปนี้ในไฟล์ (โค้ดดังที่แสดงด้านล่าง)
<property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hduser/hbase/zookeeper</value> </property>
ไฟล์ hbase-site.xml ที่มีคุณสมบัติแบบกระจายจำลองแสดงอยู่ด้านล่าง
การตั้งค่า ZooKeeper ส่วนที่เหลือแสดงอยู่ด้านล่าง
คุณสมบัติแต่ละอย่างในไฟล์มีบทบาทเฉพาะเจาะจง:
- ตั้งค่าไดเร็กทอรีรากของ HBase ในคุณสมบัติ hbase.rootdir
- สำหรับการตั้งค่าแบบกระจาย hbase.cluster.distributed ต้องตั้งค่าเป็น true
- ควรตั้งค่าคุณสมบัติ quorum ของ ZooKeeper ที่นี่
- การตั้งค่าการจำลองข้อมูล (Replication) ทำได้โดยใช้คุณสมบัติ dfs.replication โดยค่าเริ่มต้นจะตั้งค่าเป็น 1 ในโหมดกระจายอย่างสมบูรณ์ (Fully Distributed Mode) จะมีโหนดข้อมูลหลายโหนด ดังนั้นคุณสามารถเพิ่มจำนวนการจำลองข้อมูลได้โดยใส่ค่าที่มากกว่า 1 ในคุณสมบัติ dfs.replication
- ควรระบุพอร์ตไคลเอ็นต์ในคุณสมบัติ hbase.zookeeper.property.clientPort
- สามารถระบุไดเร็กทอรีข้อมูลของ ZooKeeper ได้ในคุณสมบัติ hbase.zookeeper.property.dataDir
ขั้นตอนที่ 6) เริ่มต้นใช้งาน Hadoop daemon ก่อน จากนั้นจึงเริ่มต้นใช้งาน HBase daemon ตามที่แสดงด้านล่าง ก่อนอื่นคุณต้องเริ่มต้นใช้งาน Hadoop daemon โดยใช้คำสั่ง ./start-all.sh ตามที่แสดงด้านล่าง
หลังจากนั้น ให้เริ่มการทำงานของ HBase daemon ด้วยไฟล์ hbase-start.sh ดังแสดงด้านล่าง
ตอนนี้ให้ตรวจสอบกระบวนการที่กำลังทำงานอยู่โดยใช้คำสั่ง jps ดังแสดงด้านล่าง
การติดตั้งโหมดกระจายเต็ม HBase
โหมดกระจายอย่างสมบูรณ์จะขยายการตั้งค่าแบบเสมือนกระจายไปยังคลัสเตอร์จริง
- การตั้งค่านี้ใช้งานได้ในโหมดคลัสเตอร์ Hadoop ซึ่งจะมีการสร้างโหนดหลายโหนดกระจายอยู่ทั่วคลัสเตอร์และทำงานอยู่
- วิธีการติดตั้งเหมือนกับโหมดกระจายเสมือน เพียงแต่ว่ามันจะกระจายไปยังหลายโหนด
- ไฟล์การกำหนดค่าที่กล่าวถึงใน hbase-site.xml และ hbase-env.sh นั้นเหมือนกับที่กล่าวถึงในโหมดจำลอง
ในโหมดกระจายอย่างสมบูรณ์ ตรวจสอบให้แน่ใจว่าเวอร์ชัน Hadoop บนคลัสเตอร์ของคุณตรงกับไลบรารี Hadoop ที่มาพร้อมกับ HBase เพื่อให้ดีมอนสามารถสื่อสารกันได้อย่างถูกต้อง
การแก้ไขปัญหาการติดตั้ง HBase
1) ปัญหาที่พบ: เซิร์ฟเวอร์หลักเริ่มต้นทำงานได้ แต่เซิร์ฟเวอร์ภูมิภาคไม่เริ่มต้นทำงาน
การสื่อสารระหว่างเซิร์ฟเวอร์หลัก (Master) และเซิร์ฟเวอร์ภูมิภาค (Region Server) เกิดขึ้นผ่านที่อยู่ IP ของพวกมัน เซิร์ฟเวอร์หลักจะรอรับการเชื่อมต่อจากเซิร์ฟเวอร์ภูมิภาคที่กำลังทำงานอยู่หรือมีที่อยู่ IP เป็น 127.0.0.1 ที่อยู่ IP 127.0.0.1 คือ localhost และจะแปลงเป็น localhost ของเซิร์ฟเวอร์หลักเอง
สาเหตุ:
ในการสื่อสารแบบสองทางระหว่างเซิร์ฟเวอร์ภูมิภาคและเซิร์ฟเวอร์หลัก เซิร์ฟเวอร์ภูมิภาคจะแจ้งให้เซิร์ฟเวอร์หลักทราบอย่างต่อเนื่องว่าที่อยู่ IP ของตนคือ 127.0.0.1
วิธีการแก้:
- ลบโหนดชื่อเซิร์ฟเวอร์หลักออกจากรายการโฮสต์ภายในเครื่องที่มีอยู่ในไฟล์ hosts
- ตำแหน่งของไฟล์ hosts: /etc/hosts
สิ่งที่ต้องเปลี่ยน:
เปิดไฟล์ /etc/hosts แล้วไปที่ตำแหน่งนี้
127.0.0.1 fully.qualified.regionservernameregionservername localhost.localdomain localhost : : 1 localhost3.localdomain3 localdomain3
แก้ไขการตั้งค่าข้างต้นดังต่อไปนี้ (ลบชื่อเซิร์ฟเวอร์ภูมิภาคตามที่ไฮไลต์ไว้ด้านบน)
127.0.0.1 localhost.localdomainlocalhost : : 1 localhost3.localdomain3 localdomain3
2) ปัญหาที่พบ: ไม่พบที่อยู่ XYZ ในรายการเซิร์ฟเวอร์ควอรัมของ ZooKeeper
สาเหตุ:
- เซิร์ฟเวอร์ ZooKeeper ไม่สามารถเริ่มต้นได้ และแสดงข้อผิดพลาด เช่น มี .xyz อยู่ในชื่อเซิร์ฟเวอร์
- HBase พยายามเริ่มต้นเซิร์ฟเวอร์ ZooKeeper บนเครื่องหนึ่ง แต่ในขณะเดียวกัน เครื่องนั้นไม่สามารถค้นหาตัวเองในโครงสร้างโควรัมที่มีอยู่ในไฟล์ hbase.zookeeper.quorum ได้
วิธีการแก้:
- แทนที่ชื่อโฮสต์ด้วยชื่อโฮสต์ที่ปรากฏในข้อความแสดงข้อผิดพลาด
- หากคุณมีเซิร์ฟเวอร์ DNS คุณสามารถตั้งค่าการกำหนดค่าต่อไปนี้ในไฟล์ hbase-site.xml ได้: hbase.zookeeper.dns.interface และ hbase.zookeeper.dns.nameserver
3) โจทย์ปัญหา: สร้างไดเร็กทอรีรากสำหรับ HBase ผ่าน Hadoop DFS
- อาจารย์บอกว่าคุณต้องรันสคริปต์การย้ายข้อมูล HBase
- เมื่อรันสคริปต์การย้ายข้อมูล HBase แล้ว ระบบแจ้งว่าไม่มีไฟล์อยู่ในไดเร็กทอรีหลัก
สาเหตุ:
- มีการสร้างไดเร็กทอรีใหม่สำหรับ HBase โดยใช้ระบบไฟล์แบบกระจายของ Hadoop
- ในที่นี้ HBase คาดหวังความเป็นไปได้สองประการ:
1) ไดเร็กทอรีรากไม่มีอยู่จริง
2) ก่อนหน้านี้ได้มีการเริ่มต้นใช้งาน HBase ไว้แล้ว
วิธีการแก้:
- ตรวจสอบให้แน่ใจว่าไดเร็กทอรีรากของ HBase ยังไม่มีอยู่ หรือได้รับการเริ่มต้นใช้งานโดยการเรียกใช้งานอินสแตนซ์ HBase ครั้งก่อนแล้ว
- เพื่อเป็นส่วนหนึ่งของวิธีแก้ปัญหา โปรดทำตามขั้นตอนต่อไปนี้
ขั้นตอนที่ 1) ใช้ Hadoop dfs เพื่อลบไดเร็กทอรีรากของ HBase
ขั้นตอนที่ 2) HBase จะสร้างและเริ่มต้นใช้งานไดเร็กทอรีโดยอัตโนมัติ
4) คำชี้แจงปัญหา: เหตุการณ์เซสชัน ZooKeeper หมดอายุ
สาเหตุ:
- เซิร์ฟเวอร์ HMaster หรือ HRegion ปิดตัวลงโดยการโยนข้อยกเว้น
- หากคุณตรวจสอบบันทึก คุณจะสามารถค้นหาข้อผิดพลาดที่เกิดขึ้นจริงได้
ต่อไปนี้คือตัวอย่างข้อผิดพลาดที่เกิดขึ้นเนื่องจากเหตุการณ์หมดอายุของ ZooKeeper เหตุการณ์ที่ไฮไลต์ไว้คือข้อผิดพลาดบางส่วนที่เกิดขึ้นในไฟล์บันทึก
โค้ดไฟล์บันทึกข้อมูลแสดงดังด้านล่าง:
WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000f to sun.nio.ch.SelectionKeyImpl@355811ec java.io.IOException: TIMED OUT at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:906) WARN org.apache.hadoop.hbase.util.Sleeper: We slept 79410ms, ten times longer than scheduled: 5000 INFO org.apache.zookeeper.ClientCnxn: Attempting connection to server hostname/IP:PORT INFO org.apache.zookeeper.ClientCnxn: Priming connection to java.nio.channels.SocketChannel[connected local=/IP:PORT remote=hostname/IP:PORT] INFO org.apache.zookeeper.ClientCnxn: Server connection successful WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000d to sun.nio.ch.SelectionKeyImpl@3544d65e java.io.IOException: Session Expired at org.apache.zookeeper.ClientCnxn$SendThread.readConnectResult(ClientCnxn.java:589) at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:709) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:945) ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired
วิธีการแก้:
- ขนาด RAM เริ่มต้นคือ 1 GB สำหรับการนำเข้าข้อมูลที่ใช้เวลานาน ควรมี RAM มากกว่า 1 GB
- เพิ่มระยะเวลาหมดเวลาของเซสชันสำหรับ ZooKeeper
- หากต้องการเพิ่มระยะเวลาหมดเวลาของเซสชัน ZooKeeper ให้แก้ไขคุณสมบัติต่อไปนี้ในไฟล์ hbase-site.xml ซึ่งอยู่ในโฟลเดอร์ hbase/conf
- เวลาหมดอายุของเซสชันโดยค่าเริ่มต้นคือ 60 วินาที คุณสามารถเปลี่ยนเป็น 120 วินาทีได้ตามที่ระบุไว้ด้านล่าง
<property>
<name> zookeeper.session.timeout </name>
<value>1200000</value>
</property>
<property>
<name> hbase.zookeeper.property.tickTime </name>
<value>6000</value>
</property>
















