วิธีการติดตั้ง 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 มันจะเปิดหน้าเว็บดังภาพด้านล่าง
ขั้นตอน 2) เลือกเวอร์ชันเสถียรตามที่แสดงด้านล่างเวอร์ชัน 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
เปิด hbase-env.sh ตามด้านล่างและระบุเส้นทาง JAVA_HOME ในตำแหน่ง
ขั้นตอนที่ 4) เปิดไฟล์และพูดถึงเส้นทาง
เปิดไฟล์ ~/.bashrc และพูดถึงเส้นทาง HBASE_HOME ดังแสดงด้านล่าง
ส่งออก HBASE_HOME=/home/hduser/hbase-1.1.1 ส่งออก PATH= $PATH:$HBASE_HOME/bin |
ขั้นตอนที่ 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 และ
- อันที่สองสำหรับไดเร็กทอรีข้อมูลสอดคล้องกับ ZooKeeper
กิจกรรม HMaster และ ZooKeeper ทั้งหมดชี้ไปที่ hbase-site.xml นี้
ขั้นตอนที่ 6) กล่าวถึง IP
เปิดไฟล์โฮสต์ที่มีอยู่ใน /etc ตำแหน่งและระบุ IP ดังแสดงด้านล่าง
ขั้นตอนที่ 7) ตอนนี้รัน Start-hbase.sh ในตำแหน่ง hbase-1.1.1/bin ดังที่แสดงด้านล่าง
และเราสามารถตรวจสอบด้วยคำสั่ง jps เพื่อดูว่า HMaster กำลังทำงานอยู่หรือไม่
ขั้นตอนที่ 8) เริ่ม HBase Shell
เชลล์ HBase สามารถเริ่มต้นด้วยการใช้ “เปลือก hbase” และมันจะเข้าสู่โหมดเชลล์เชิงโต้ตอบดังที่แสดงในภาพหน้าจอด้านล่าง เมื่อเข้าสู่โหมดเชลล์แล้ว เราก็สามารถดำเนินการคำสั่งทุกประเภทได้
โหมดสแตนด์อโลนไม่ต้องการ 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 ในตำแหน่งนั้น และส่งออกคำสั่งตามที่แสดง
ขั้นตอน 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 ในคุณสมบัตินี้
- สำหรับการตั้งค่าแบบกระจาย เราต้องตั้งค่าคุณสมบัตินี้
- ควรตั้งค่าคุณสมบัติโควรัมของ ZooKeeper ที่นี่
- การจำลองแบบตั้งค่าเสร็จแล้วในคุณสมบัตินี้ ตามค่าเริ่มต้น เราจะวางการจำลองเป็น 1 ในโหมดกระจายเต็มที่ จะมีโหนดข้อมูลหลายโหนด เพื่อให้เราสามารถเพิ่มการจำลองโดยการวางค่ามากกว่า 1 ค่าในคุณสมบัติ dfs.replication
- ควรกล่าวถึงพอร์ตไคลเอ็นต์ในคุณสมบัตินี้
- สามารถกล่าวถึงไดเร็กทอรีข้อมูล ZooKeeper ได้ในคุณสมบัตินี้
ขั้นตอน 6) เริ่ม Hadoop daemons ก่อน และหลังจากนั้นให้เริ่ม HBase daemons ดังที่แสดงด้านล่าง
ที่นี่ก่อนอื่นคุณต้องเริ่ม Hadoop daemons โดยใช้“./start-all.sh” คำสั่งดังภาพด้านล่าง
หลังจากสตาร์ท Hbase daemons โดย hbase-start.sh
ตอนนี้ตรวจสอบ jps
การติดตั้งโหมดกระจายเต็ม 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>