วิธีการติดตั้ง HBase บน Ubuntu (การติดตั้ง HBase)

โหมดการติดตั้ง Apache HBase

Apache HBase สามารถติดตั้งได้สามโหมด คุณสมบัติของโหมดเหล่านี้มีการกล่าวถึงด้านล่าง

1) การติดตั้งโหมดสแตนด์อโลน (ไม่ต้องพึ่งพาระบบ Hadoop)

  • นี่เป็นโหมดเริ่มต้นของ HBase
  • มันทำงานบนระบบไฟล์ในเครื่อง
  • มันไม่ได้ใช้ Hadoop เอชดีเอฟเอส
  • มีเพียง HMaster daemon เท่านั้นที่สามารถทำงานได้
  • ไม่แนะนำสำหรับสภาพแวดล้อมการใช้งานจริง
  • ทำงานใน JVM เดียว

2) การติดตั้งโหมด Pseudo-Distributed (ระบบ Hadoop โหนดเดียว + การติดตั้ง HBase)

  • มันทำงาน Hadoop HDFS
  • Daemon ทั้งหมดทำงานในโหนดเดียว
  • แนะนำสำหรับสภาพแวดล้อมการผลิต

3) การติดตั้งโหมดกระจายอย่างสมบูรณ์ (สภาพแวดล้อม MultinodeHadoop + การติดตั้ง HBase)

  • มันทำงาน Hadoop HDFS
  • เดมอนทั้งหมดจะทำงานบนโหนดทั้งหมดที่มีอยู่ในคลัสเตอร์
  • แนะนำเป็นอย่างยิ่งสำหรับสภาพแวดล้อมการผลิต

สำหรับการติดตั้ง Hadoop อ้างอิง URL นี้ Here

วิธีดาวน์โหลดไฟล์ HBase tar เวอร์ชันเสถียร

ขั้นตอน 1) ไปที่ลิงค์ Good Farm Animal Welfare Awards เพื่อดาวน์โหลด HBase มันจะเปิดหน้าเว็บดังภาพด้านล่าง

ดาวน์โหลดเวอร์ชันเสถียรของไฟล์ HBase Tar

ขั้นตอน 2) เลือกเวอร์ชันเสถียรตามที่แสดงด้านล่างเวอร์ชัน 1.1.2

ดาวน์โหลดเวอร์ชันเสถียรของไฟล์ HBase Tar

ขั้นตอน 3) คลิกที่ hbase-1.1.2-bin.tar.gz มันจะดาวน์โหลดไฟล์ tar คัดลอกไฟล์ tar ไปยังตำแหน่งการติดตั้ง

ดาวน์โหลดเวอร์ชันเสถียรของไฟล์ HBase 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
เปิด hbase-env.sh ตามด้านล่างและระบุเส้นทาง JAVA_HOME ในตำแหน่ง

ติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน

ขั้นตอนที่ 4) เปิดไฟล์และพูดถึงเส้นทาง
เปิดไฟล์ ~/.bashrc และพูดถึงเส้นทาง HBASE_HOME ดังแสดงด้านล่าง

ส่งออก HBASE_HOME=/home/hduser/hbase-1.1.1
ส่งออก PATH= $PATH:$HBASE_HOME/bin

ติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน

ขั้นตอนที่ 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 ใน Ubuntu ด้วยโหมดสแตนด์อโลน

ที่นี่เรากำลังวางคุณสมบัติสองรายการ

  • หนึ่งรายการสำหรับไดเร็กทอรีราก HBase และ
  • อันที่สองสำหรับไดเร็กทอรีข้อมูลสอดคล้องกับ ZooKeeper

กิจกรรม HMaster และ ZooKeeper ทั้งหมดชี้ไปที่ hbase-site.xml นี้

ขั้นตอนที่ 6) กล่าวถึง IP
เปิดไฟล์โฮสต์ที่มีอยู่ใน /etc ตำแหน่งและระบุ IP ดังแสดงด้านล่าง

ติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน

ขั้นตอนที่ 7) ตอนนี้รัน Start-hbase.sh ในตำแหน่ง hbase-1.1.1/bin ดังที่แสดงด้านล่าง

และเราสามารถตรวจสอบด้วยคำสั่ง jps เพื่อดูว่า HMaster กำลังทำงานอยู่หรือไม่

ติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน

ขั้นตอนที่ 8) เริ่ม HBase Shell
เชลล์ HBase สามารถเริ่มต้นด้วยการใช้ “เปลือก hbase” และมันจะเข้าสู่โหมดเชลล์เชิงโต้ตอบดังที่แสดงในภาพหน้าจอด้านล่าง เมื่อเข้าสู่โหมดเชลล์แล้ว เราก็สามารถดำเนินการคำสั่งทุกประเภทได้

ติดตั้ง HBase ใน Ubuntu ด้วยโหมดสแตนด์อโลน

โหมดสแตนด์อโลนไม่ต้องการ Hadoop daemons เพื่อเริ่มทำงาน HBase สามารถทำงานได้อย่างอิสระ

โหมดการติดตั้งแบบกระจาย HBase Pseudo

นี่เป็นอีกวิธีหนึ่งสำหรับการติดตั้ง Apache HBase หรือที่เรียกว่าโหมด Pseudo Distributed ของการติดตั้ง
ด้านล่างนี้เป็นขั้นตอนในการติดตั้ง HBase ผ่านโหมด Pseudo Distributed:

ขั้นตอน 1) วาง hbase-1.1.2-bin.tar.gz ใน /home/hduser

ขั้นตอน 2) คลายซิปโดยดำเนินการ command$tar -xvf hbase-1.1.2-bin.tar.gz มันจะแตกไฟล์ออกมา และจะสร้าง hbase-1.1.2 ในตำแหน่ง /home/hduser

ขั้นตอน 3) เปิดไฟล์ hbase-env.sh ดังต่อไปนี้ และระบุเส้นทาง JAVA_HOME และเส้นทางเซิร์ฟเวอร์ Region ในตำแหน่งนั้น และส่งออกคำสั่งตามที่แสดง

โหมดการติดตั้งแบบกระจาย HBase Pseudo

ขั้นตอน 4) ในขั้นตอนนี้ เราจะเปิดไฟล์ ~/.bashrc และกล่าวถึงเส้นทาง HBASE_HOME ดังที่แสดงในภาพหน้าจอ

การติดตั้งโหมดกระจาย HBase Pseudo

ขั้นตอน 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 Pseudo

โหมดการติดตั้งแบบกระจาย HBase Pseudo

  1. การตั้งค่าไดเร็กทอรีราก Hbase ในคุณสมบัตินี้
  2. สำหรับการตั้งค่าแบบกระจาย เราต้องตั้งค่าคุณสมบัตินี้
  3. ควรตั้งค่าคุณสมบัติโควรัมของ ZooKeeper ที่นี่
  4. การจำลองแบบตั้งค่าเสร็จแล้วในคุณสมบัตินี้ ตามค่าเริ่มต้น เราจะวางการจำลองเป็น 1 ในโหมดกระจายเต็มที่ จะมีโหนดข้อมูลหลายโหนด เพื่อให้เราสามารถเพิ่มการจำลองโดยการวางค่ามากกว่า 1 ค่าในคุณสมบัติ dfs.replication
  5. ควรกล่าวถึงพอร์ตไคลเอ็นต์ในคุณสมบัตินี้
  6. สามารถกล่าวถึงไดเร็กทอรีข้อมูล ZooKeeper ได้ในคุณสมบัตินี้

ขั้นตอน 6) เริ่ม Hadoop daemons ก่อน และหลังจากนั้นให้เริ่ม HBase daemons ดังที่แสดงด้านล่าง

ที่นี่ก่อนอื่นคุณต้องเริ่ม Hadoop daemons โดยใช้“./start-all.sh” คำสั่งดังภาพด้านล่าง

โหมดการติดตั้งแบบกระจาย HBase Pseudo

หลังจากสตาร์ท Hbase daemons โดย hbase-start.sh

โหมดการติดตั้งแบบกระจาย HBase Pseudo

ตอนนี้ตรวจสอบ jps

โหมดการติดตั้งแบบกระจาย HBase Pseudo

การติดตั้งโหมดกระจายเต็ม HBase

  • การตั้งค่านี้จะทำงานในโหมดคลัสเตอร์ Hadoop โดยโหนดหลายโหนดจะสร้างขึ้นทั่วทั้งคลัสเตอร์และกำลังทำงาน
  • การติดตั้งจะเหมือนกับโหมดการกระจายแบบหลอก ข้อแตกต่างเพียงอย่างเดียวคือมันจะวางไข่ในหลายโหนด
  • ไฟล์การกำหนดค่าที่กล่าวถึงใน HBase-site.xml และ hbase-env.sh เหมือนกับที่กล่าวถึงในโหมดหลอก

การแก้ไขปัญหาการติดตั้ง HBase

1) คำชี้แจงปัญหา: เซิร์ฟเวอร์หลักเริ่มต้น แต่เซิร์ฟเวอร์ภูมิภาคไม่เริ่มต้น

การสื่อสารระหว่างเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์ภูมิภาคผ่านที่อยู่ IP เช่นเดียวกับวิธีที่ Master รับฟังว่าเซิร์ฟเวอร์ภูมิภาคกำลังทำงานหรือมีที่อยู่ IP 127.0.0.1 ที่อยู่ IP 127.0.0.1 ซึ่งเป็นโฮสต์ภายในเครื่องและแก้ไขเป็นโฮสต์ภายในเครื่องของเซิร์ฟเวอร์หลัก

สาเหตุ:

ในการสื่อสารแบบคู่ระหว่างเซิร์ฟเวอร์ภูมิภาคและเซิร์ฟเวอร์หลัก เซิร์ฟเวอร์ภูมิภาคจะแจ้งเซิร์ฟเวอร์หลักอย่างต่อเนื่องเกี่ยวกับที่อยู่ IP ของพวกเขาคือ 127.0.0.1

วิธีการแก้:

  • ต้องลบโหนดชื่อเซิร์ฟเวอร์หลักออกจากโฮสต์ภายในเครื่องที่มีอยู่ในไฟล์โฮสต์
  • ตำแหน่งไฟล์โฮสต์ /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.อินเทอร์เฟซ
    • 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 เราจะต้องแก้ไขคุณสมบัติต่อไปนี้ใน “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>