Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้

Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้

คงไม่มีความลับว่าปีที่แล้วเป็นปีแห่งการเปลี่ยนแปลงครั้งใหญ่สำหรับ Apache Hadoop เมื่อปีที่แล้ว Cloudera และ Hortonworks ได้รวมกิจการกัน (โดยพื้นฐานแล้วคือการซื้อกิจการอย่างหลัง) และ Mapr ถูกขายให้กับ Hewlett Packard เนื่องจากปัญหาทางการเงินร้ายแรง และหากไม่กี่ปีก่อน ในกรณีของการติดตั้งในองค์กร มักจะต้องเลือกระหว่าง Cloudera และ Hortonworks แต่ในปัจจุบัน น่าเสียดายที่เราไม่มีทางเลือกนี้ สิ่งที่น่าประหลาดใจอีกประการหนึ่งคือความจริงที่ว่า Cloudera ประกาศในเดือนกุมภาพันธ์ของปีนี้ว่าจะหยุดเผยแพร่ชุดไบนารีของการแจกจ่ายไปยังพื้นที่เก็บข้อมูลสาธารณะ และตอนนี้มีให้บริการผ่านการสมัครสมาชิกแบบชำระเงินเท่านั้น แน่นอนว่ายังคงสามารถดาวน์โหลด CDH และ HDP เวอร์ชันล่าสุดก่อนสิ้นปี 2019 ได้ และคาดว่าจะรองรับเป็นเวลาหนึ่งถึงสองปี แต่จะทำอย่างไรต่อไป? สำหรับผู้ที่ชำระค่าสมัครสมาชิกก่อนหน้านี้ไม่มีอะไรเปลี่ยนแปลง และสำหรับผู้ที่ไม่ต้องการเปลี่ยนไปใช้เวอร์ชันที่ต้องชำระเงิน แต่ในขณะเดียวกันก็ต้องการรับส่วนประกอบคลัสเตอร์เวอร์ชันล่าสุด รวมถึงแพตช์และการอัปเดตอื่น ๆ เราได้เตรียมบทความนี้แล้ว ในนั้นเราจะพิจารณาทางเลือกที่เป็นไปได้ในการออกจากสถานการณ์นี้

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

อารีนาดาต้า ฮาดูป

Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้

นี่เป็นชุดแจกจ่ายการพัฒนาในประเทศแบบใหม่ที่สมบูรณ์และยังไม่ค่อยมีใครรู้จัก น่าเสียดายที่ตอนนี้ที่Habréมีเพียงเท่านั้น บทความนี้.

ข้อมูลเพิ่มเติมสามารถพบได้อย่างเป็นทางการ เว็บไซต์ โครงการ. เวอร์ชันล่าสุดของการแจกจ่ายนี้ใช้ Hadoop 3.1.2 สำหรับเวอร์ชัน 3 และ 2.8.5 สำหรับเวอร์ชัน 2

ข้อมูลเกี่ยวกับแผนงานสามารถพบได้ ที่นี่.

Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้
อินเทอร์เฟซตัวจัดการคลัสเตอร์ Arenadata

ผลิตภัณฑ์หลักของ Arenadata คือ ตัวจัดการคลัสเตอร์ Arenadata (ADCM)ซึ่งใช้ในการติดตั้ง กำหนดค่า และตรวจสอบโซลูชันซอฟต์แวร์ต่างๆ ของบริษัท ADCM แจกจ่ายฟรี และฟังก์ชันการทำงานได้รับการขยายโดยการเพิ่มบันเดิล ซึ่งเป็นชุด Playbooks ที่สามารถเข้าใจได้ บันเดิลแบ่งออกเป็นสองประเภท: องค์กรและชุมชน หลังนี้สามารถดาวน์โหลดได้ฟรีจากเว็บไซต์ Arenadata นอกจากนี้ยังสามารถพัฒนาชุดข้อมูลของคุณเองและเชื่อมต่อกับ ADCM ได้อีกด้วย

สำหรับการปรับใช้และการจัดการ Hadoop 3 จะมีการนำเสนอบันเดิลเวอร์ชันชุมชนร่วมกับ ADCM แต่สำหรับ Hadoop 2 มีเพียง อาปาเช่ อัมบารี เป็นทางเลือก สำหรับที่เก็บข้อมูลที่มีแพ็คเกจนั้นเปิดให้บุคคลทั่วไปเข้าถึงได้ โดยสามารถดาวน์โหลดและติดตั้งในลักษณะปกติสำหรับส่วนประกอบทั้งหมดของคลัสเตอร์ โดยรวมแล้วการกระจายตัวดูน่าสนใจมาก ฉันแน่ใจว่าจะต้องมีผู้ที่คุ้นเคยกับโซลูชัน เช่น Cloudera Manager และ Ambari และใครจะชอบ ADCM เอง สำหรับบางคนก็จะเป็นข้อดีอย่างมากที่การกระจายสินค้า รวมอยู่ในการลงทะเบียนซอฟต์แวร์ เพื่อทดแทนการนำเข้า

หากเราพูดถึงข้อเสีย ก็จะเหมือนกับการแจกแจง Hadoop อื่นๆ ทั้งหมด กล่าวคือ:

  • ที่เรียกว่า “การล็อคอินของผู้ขาย” จากการใช้ตัวอย่างของ Cloudera และ Hortonworks เราได้ตระหนักแล้วว่ามีความเสี่ยงในการเปลี่ยนแปลงนโยบายของบริษัทอยู่เสมอ
  • ความล่าช้าอย่างมากหลัง Apache ต้นน้ำ

วานิลลา ฮาดูป

Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้

ดังที่คุณทราบ Hadoop ไม่ใช่ผลิตภัณฑ์ขนาดใหญ่ แต่เป็นกาแล็กซี่ของบริการทั้งหมดที่อยู่รอบ ๆ ระบบไฟล์แบบกระจาย HDFS มีเพียงไม่กี่คนที่จะมีคลัสเตอร์ไฟล์เดียวเพียงพอ บางตัวต้องการ Hive บางตัวต้องใช้ Presto แล้วก็มี HBase และ Phoenix Spark ถูกใช้มากขึ้น สำหรับการเรียบเรียงและการโหลดข้อมูล บางครั้งจะพบ Oozie, Sqoop และ Flume และหากเกิดปัญหาด้านความปลอดภัย Kerberos ร่วมกับ Ranger ก็จะถูกนึกถึงทันที

ส่วนประกอบ Hadoop เวอร์ชันไบนารีมีอยู่บนเว็บไซต์ของโครงการระบบนิเวศแต่ละโครงการในรูปแบบของ tarball คุณสามารถดาวน์โหลดและเริ่มการติดตั้งได้ แต่มีเงื่อนไขเดียว: นอกเหนือจากการประกอบแพ็คเกจอย่างอิสระจากไบนารี "ดิบ" ซึ่งคุณต้องการทำมากที่สุด คุณจะไม่มั่นใจในความเข้ากันได้ของส่วนประกอบเวอร์ชันที่ดาวน์โหลดกับแต่ละส่วนประกอบ อื่น. ตัวเลือกที่ต้องการคือการสร้างโดยใช้ Apache Bigtop Bigtop จะช่วยให้คุณสร้างจากที่เก็บ Apache maven รันการทดสอบ และสร้างแพ็คเกจได้ แต่สิ่งที่สำคัญมากสำหรับเรา Bigtop จะประกอบส่วนประกอบเวอร์ชันต่างๆ ที่จะใช้งานร่วมกันได้ เราจะพูดถึงรายละเอียดเพิ่มเติมด้านล่าง

อาปาเช่ บิ๊กท็อป

Apache Bigtop และการเลือกการจัดจำหน่าย Hadoop วันนี้

Apache Bigtop เป็นเครื่องมือสำหรับการสร้าง บรรจุภัณฑ์ และการทดสอบหลายอย่าง
โครงการโอเพ่นซอร์ส เช่น Hadoop และ Greenplum บิ๊กท็อปมีมากมาย
เผยแพร่ ในขณะที่เขียน เวอร์ชันเสถียรล่าสุดคือเวอร์ชัน 1.4
และในมาสเตอร์มี 1.5 รุ่นต่างๆ ของรุ่นใช้รุ่นที่แตกต่างกัน
ส่วนประกอบ ตัวอย่างเช่น สำหรับส่วนประกอบหลักของ Hadoop 1.4 จะมีเวอร์ชัน 2.8.5 และในเวอร์ชันหลัก
2.10.0. องค์ประกอบของส่วนประกอบที่รองรับก็เปลี่ยนแปลงเช่นกัน มีบางอย่างล้าสมัยและ
สิ่งที่ไม่หมุนเวียนก็หายไป และมีสิ่งใหม่ๆ ที่เป็นที่ต้องการมากขึ้นเข้ามาแทนที่ และ
ไม่จำเป็นต้องมาจากตระกูล Apache เอง

นอกจากนี้ Bigtop ยังมีอีกมากมาย ส้อม.

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

ในทีเซอร์ ผู้ที่เคยสนใจโปรเจ็กต์ของจักรวาล Linux เช่น Gentoo และ LFS อาจพบว่าการทำงานกับสิ่งนี้เป็นเรื่องน่ายินดีและจดจำช่วงเวลา "มหากาพย์" เหล่านั้นเมื่อเรากำลังมองหา (หรือแม้แต่การเขียน) สร้างและสร้าง Mozilla ใหม่เป็นประจำด้วยแพตช์ใหม่

ข้อได้เปรียบที่สำคัญของ Bigtop คือความเปิดกว้างและความอเนกประสงค์ของเครื่องมือที่ใช้เป็นหลัก มันขึ้นอยู่กับ Gradle และ Apache Maven Gradle ค่อนข้างเป็นที่รู้จักในฐานะเครื่องมือที่ Google ใช้ในการสร้าง Android มันมีความยืดหยุ่น และอย่างที่พวกเขาพูดว่า "ผ่านการทดสอบการต่อสู้แล้ว" Maven เป็นเครื่องมือมาตรฐานสำหรับการสร้างโปรเจ็กต์ใน Apache และเนื่องจากผลิตภัณฑ์ส่วนใหญ่เปิดตัวผ่าน Maven จึงไม่สามารถทำได้หากไม่มีที่นี่เช่นกัน ควรให้ความสนใจกับ POM (โมเดลวัตถุโครงการ) - ไฟล์ xml "พื้นฐาน" ที่อธิบายทุกสิ่งที่จำเป็นสำหรับ Maven ในการทำงานกับโครงการของคุณซึ่งมีการสร้างงานทั้งหมด ตรงที่
บางส่วนของ Maven และมีอุปสรรคบางประการที่ผู้ใช้ Bigtop ครั้งแรกมักพบเจอ

การปฏิบัติ

แล้วคุณควรเริ่มต้นตรงไหน? ไปที่หน้าดาวน์โหลดและดาวน์โหลดเวอร์ชันเสถียรล่าสุดเป็นไฟล์เก็บถาวร คุณยังสามารถค้นหาสิ่งประดิษฐ์ไบนารีที่รวบรวมโดย Bigtop ได้ที่นั่น อย่างไรก็ตามในบรรดาผู้จัดการแพ็คเกจทั่วไปนั้นรองรับ YUM และ APT

หรือคุณสามารถดาวน์โหลดเวอร์ชันเสถียรล่าสุดได้โดยตรงจาก
GitHub:

$ git clone --branch branch-1.4 https://github.com/apache/bigtop.git

กำลังโคลนนิ่งใน “บิ๊กท็อป”…

remote: Enumerating objects: 46, done.
remote: Counting objects: 100% (46/46), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 40217 (delta 14), reused 10 (delta 1), pack-reused 40171
Получение объектов: 100% (40217/40217), 43.54 MiB | 1.05 MiB/s, готово.
Определение изменений: 100% (20503/20503), готово.
Updating files: 100% (1998/1998), готово.

ไดเร็กทอรี ./bigtop ที่ได้จะมีลักษณะดังนี้:

./bigtop-bigpetstore — แอปพลิเคชันสาธิต ตัวอย่างสังเคราะห์
./bigtop-ci - เครื่องมือ CI, เจนกินส์
./bigtop-data-generators — การสร้างข้อมูล การสังเคราะห์ สำหรับการทดสอบควัน ฯลฯ
./bigtop-deploy - เครื่องมือการปรับใช้
./bigtop-packages — การกำหนดค่า, สคริปต์, แพตช์สำหรับการประกอบ, ส่วนหลักของเครื่องมือ
./bigtop-test-framework — กรอบการทดสอบ
./bigtop-tests — การทดสอบเอง โหลดและควัน
./bigtop_toolchain — สภาพแวดล้อมสำหรับการประกอบ การเตรียมสภาพแวดล้อมสำหรับเครื่องมือในการทำงาน
./build — สร้างไดเร็กทอรีการทำงาน
./dl — ไดเร็กทอรีสำหรับแหล่งที่ดาวน์โหลด
./docker — การสร้างอิมเมจนักเทียบท่า การทดสอบ
./gradle - การกำหนดค่าการไล่ระดับ
./output – ไดเร็กทอรีที่บิวด์อาร์ติแฟกต์ไป
./provisioner — การจัดเตรียม

สิ่งที่น่าสนใจที่สุดสำหรับเราในขั้นตอนนี้คือการกำหนดค่าหลัก ./bigtop/bigtop.bomซึ่งเราจะเห็นส่วนประกอบที่รองรับทั้งหมดพร้อมเวอร์ชัน นี่คือที่ที่เราสามารถระบุเวอร์ชันอื่นของผลิตภัณฑ์ (หากเราต้องการลองสร้างมันขึ้นมาทันที) หรือเวอร์ชันบิลด์ (เช่น หากเราเพิ่มแพตช์ที่สำคัญ)

ไดเร็กทอรีย่อยก็น่าสนใจเช่นกัน ./bigtop/bigtop-packagesซึ่งเกี่ยวข้องโดยตรงกับกระบวนการประกอบส่วนประกอบและแพ็คเกจด้วย

ดังนั้นเราจึงดาวน์โหลดไฟล์เก็บถาวร แตกไฟล์ออก หรือสร้างโคลนจาก GitHub เราจะเริ่มสร้างได้ไหม

ไม่ มาเตรียมสภาพแวดล้อมกันก่อน

การเตรียมสิ่งแวดล้อม

และที่นี่เราต้องการการล่าถอยเล็กน้อย หากต้องการสร้างผลิตภัณฑ์ที่ซับซ้อนไม่มากก็น้อย คุณต้องมีสภาพแวดล้อมที่แน่นอน - ในกรณีของเราคือ JDK, ไลบรารีที่แบ่งใช้เดียวกัน, ไฟล์ส่วนหัว ฯลฯ เครื่องมือ เช่น ant, ivy2 และอื่นๆ อีกมากมาย หนึ่งในตัวเลือกในการรับสภาพแวดล้อมที่คุณต้องการสำหรับ Bigtop คือการติดตั้งส่วนประกอบที่จำเป็นบนโฮสต์บิลด์ ฉันอาจผิดตามลำดับเวลา แต่ดูเหมือนว่าในเวอร์ชัน 1.0 จะมีตัวเลือกในการสร้างอิมเมจ Docker ที่กำหนดค่าไว้ล่วงหน้าและเข้าถึงได้ ซึ่งสามารถพบได้ที่นี่

ส่วนการเตรียมสิ่งแวดล้อมก็มีผู้ช่วยค่ะ - หุ่นกระบอก

คุณสามารถใช้คำสั่งต่อไปนี้ เรียกใช้จากไดเร็กทอรีราก
เครื่องมือ, ./bigtop:

./gradlew toolchain
./gradlew toolchain-devtools
./gradlew toolchain-puppetmodules

หรือโดยตรงผ่านหุ่นเชิด:

puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::installer"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::deployment-tools"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::development-tools"

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

การชุมนุม

เราจะพยายามรวบรวมอะไรได้บ้าง? คำตอบสำหรับคำถามนี้จะได้รับจากผลลัพธ์ของคำสั่ง

./gradlew tasks

ในส่วนงานแพ็คเกจ มีผลิตภัณฑ์จำนวนหนึ่งที่เป็นสิ่งประดิษฐ์ชิ้นสุดท้ายของ Bigtop
สามารถระบุได้ด้วยส่วนต่อท้าย -rpm หรือ -pkg-ind (ในกรณีของ building
ในนักเทียบท่า) ในกรณีของเรา สิ่งที่น่าสนใจที่สุดคือ Hadoop

มาลองสร้างในสภาพแวดล้อมของเซิร์ฟเวอร์บิลด์ของเรา:

./gradlew hadoop-rpm

Bigtop เองจะดาวน์โหลดแหล่งข้อมูลที่จำเป็นสำหรับส่วนประกอบเฉพาะและเริ่มการประกอบ ดังนั้นการทำงานของเครื่องมือจึงขึ้นอยู่กับที่เก็บ Maven และแหล่งข้อมูลอื่น ๆ นั่นคือต้องมีการเข้าถึงอินเทอร์เน็ต

ในระหว่างการดำเนินการ จะมีการสร้างเอาต์พุตมาตรฐาน บางครั้งข้อความและข้อความแสดงข้อผิดพลาดสามารถช่วยให้คุณเข้าใจสิ่งที่ผิดพลาดได้ และบางครั้งคุณจำเป็นต้องได้รับข้อมูลเพิ่มเติม ในกรณีนี้ควรเพิ่มข้อโต้แย้ง --info หรือ --debugและอาจมีประโยชน์ด้วย –stacktrace. มีวิธีที่สะดวกในการสร้างชุดข้อมูลสำหรับการเข้าถึงรายชื่อผู้รับจดหมายในภายหลังคือคีย์ --scan.

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

ข้อผิดพลาดบ่อยครั้งเป็นผลมาจากการไม่สามารถรับส่วนประกอบใด ๆ ที่จำเป็นสำหรับการประกอบ โดยทั่วไป คุณสามารถแก้ไขปัญหาได้โดยการสร้างโปรแกรมแก้ไขเพื่อแก้ไขบางอย่างในแหล่งที่มา เช่น ที่อยู่ใน pom.xml ในไดเร็กทอรีรากของแหล่งที่มา ทำได้โดยการสร้างและวางไว้ในไดเร็กทอรีที่เหมาะสม ./bigtop/bigtop-packages/src/common/oozie/ แพทช์เช่นในรูปแบบ patch2-fix.diff

--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,7 @@
<repositories>
<repository>
<id>central</id>
- <url>http://repo1.maven.org/maven2</url>
+ <url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>

เป็นไปได้มากว่าในขณะที่อ่านบทความนี้ คุณไม่จำเป็นต้องดำเนินการแก้ไขข้างต้นด้วยตนเอง

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

./gradlew hadoop-clean
> Task :hadoop_vardefines
> Task :hadoop-clean
BUILD SUCCESSFUL in 5s
2 actionable tasks: 2 executed

การดำเนินการนี้จะย้อนกลับการเปลี่ยนแปลงทั้งหมดในแอสเซมบลีของส่วนประกอบนี้ หลังจากนั้นจะดำเนินการแอสเซมบลีอีกครั้ง คราวนี้เราจะพยายามสร้างโปรเจ็กต์ในอิมเมจนักเทียบท่า:

./gradlew -POS=centos-7 -Pprefix=1.2.1 hadoop-pkg-ind
> Task :hadoop-pkg-ind
Building 1.2.1 hadoop-pkg on centos-7 in Docker...
+++ dirname ./bigtop-ci/build.sh
++ cd ./bigtop-ci/..
++ pwd
+ BIGTOP_HOME=/tmp/bigtop
+ '[' 6 -eq 0 ']'
+ [[ 6 -gt 0 ]]
+ key=--prefix
+ case $key in
+ PREFIX=1.2.1
+ shift
+ shift
+ [[ 4 -gt 0 ]]
+ key=--os
+ case $key in
+ OS=centos-7
+ shift
+ shift
+ [[ 2 -gt 0 ]]
+ key=--target
+ case $key in
+ TARGET=hadoop-pkg
+ shift
+ shift
+ [[ 0 -gt 0 ]]
+ '[' -z x ']'
+ '[' -z x ']'
+ '[' '' == true ']'
+ IMAGE_NAME=bigtop/slaves:1.2.1-centos-7
++ uname -m
+ ARCH=x86_64
+ '[' x86_64 '!=' x86_64 ']'
++ docker run -d bigtop/slaves:1.2.1-centos-7 /sbin/init
+
CONTAINER_ID=0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8
+ trap 'docker rm -f
0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8' EXIT
....
много вывода
....
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-namenode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-secondarynamenode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-zkfc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-journalnode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-datanode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-httpfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-resourcemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-nodemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-proxyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-timelineserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-historyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-client-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-conf-pseudo-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-doc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-devel-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-fuse-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-debuginfo-2.8.5-1.el7.x86_64.rpm
+ umask 022
+ cd /bigtop/build/hadoop/rpm//BUILD
+ cd hadoop-2.8.5-src
+ /usr/bin/rm -rf /bigtop/build/hadoop/rpm/BUILDROOT/hadoop-2.8.5-1.el7.x86_64
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.uQ2FCn
+ exit 0
+ umask 022
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.CwDb22
+ cd /bigtop/build/hadoop/rpm//BUILD
+ rm -rf hadoop-2.8.5-src
+ exit 0
[ant:touch] Creating /bigtop/build/hadoop/.rpm
:hadoop-rpm (Thread[Task worker for ':',5,main]) completed. Took 38 mins 1.151 secs.
:hadoop-pkg (Thread[Task worker for ':',5,main]) started.
> Task :hadoop-pkg
Task ':hadoop-pkg' is not up-to-date because:
Task has not declared any outputs despite executing actions.
:hadoop-pkg (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
BUILD SUCCESSFUL in 40m 37s
6 actionable tasks: 6 executed
+ RESULT=0
+ mkdir -p output
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/build .
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/output .
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
+ '[' 0 -ne 0 ']'
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
Error: No such container:
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
BUILD SUCCESSFUL in 41m 24s
1 actionable task: 1 executed

บิลด์นี้ดำเนินการภายใต้ CentOS แต่สามารถทำได้บน Ubuntu ด้วย:

./gradlew -POS=ubuntu-16.04 -Pprefix=1.2.1 hadoop-pkg-ind

นอกเหนือจากการสร้างแพ็คเกจสำหรับ Linux ต่างๆ แล้ว เครื่องมือนี้ยังสามารถสร้างพื้นที่เก็บข้อมูลด้วยแพ็คเกจที่คอมไพล์แล้ว เช่น:

./gradlew yum

คุณยังสามารถจำเกี่ยวกับการทดสอบควันและการปรับใช้ใน Docker ได้อีกด้วย

สร้างคลัสเตอร์ของสามโหนด:

./gradlew -Pnum_instances=3 docker-provisioner

รันการทดสอบควันในกลุ่มที่มีสามโหนด:

./gradlew -Pnum_instances=3 -Prun_smoke_tests docker-provisioner

ลบคลัสเตอร์:

./gradlew docker-provisioner-destroy

รับคำสั่งสำหรับการเชื่อมต่อภายในคอนเทนเนอร์นักเทียบท่า:

./gradlew docker-provisioner-ssh

แสดงสถานะ:

./gradlew docker-provisioner-status

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับงานการปรับใช้ได้ในเอกสารประกอบ

ถ้าเราพูดถึงการทดสอบ มีจำนวนมากทีเดียว ส่วนใหญ่เป็นควันและบูรณาการ การวิเคราะห์ของพวกเขาอยู่นอกเหนือขอบเขตของบทความนี้ ฉันขอบอกว่าการประกอบชุดแจกจ่ายนั้นไม่ใช่เรื่องยากอย่างที่คิดเมื่อมองแวบแรก เราจัดการเพื่อประกอบและผ่านการทดสอบกับส่วนประกอบทั้งหมดที่เราใช้ในการผลิตของเรา และเรายังไม่มีปัญหาในการปรับใช้และดำเนินการขั้นพื้นฐานในสภาพแวดล้อมการทดสอบอีกด้วย

นอกเหนือจากส่วนประกอบที่มีอยู่ใน Bigtop แล้ว คุณยังสามารถเพิ่มสิ่งอื่นใดได้ แม้กระทั่งการพัฒนาซอฟต์แวร์ของคุณเอง ทั้งหมดนี้เป็นระบบอัตโนมัติอย่างสมบูรณ์แบบและสอดคล้องกับแนวคิด CI/CD

ข้อสรุป

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

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

สิ่งสำคัญคือต้องทราบว่าโครงการ Bigtop เองก็ต้องการการพัฒนาและดูเหมือนว่าจะไม่ได้รับการพัฒนาอย่างแข็งขันในปัจจุบัน โอกาสของ Hadoop 3 ที่ปรากฏในนั้นก็ไม่ชัดเจนเช่นกัน อย่างไรก็ตาม หากคุณมีความต้องการอย่างแท้จริงในการสร้าง Hadoop 3 คุณสามารถดูได้ ส้อม จาก Arenadata ซึ่งนอกเหนือจากมาตรฐานแล้ว
มีส่วนประกอบเพิ่มเติมจำนวนหนึ่ง (Ranger, Knox, NiFi)

สำหรับ Rostelecom สำหรับเรา Bigtop เป็นหนึ่งในตัวเลือกที่ได้รับการพิจารณาในปัจจุบัน ไม่ว่าเราจะเลือกมันหรือไม่ เวลาจะเป็นเครื่องพิสูจน์เอง

ภาคผนวก

หากต้องการรวมส่วนประกอบใหม่ไว้ในชุดประกอบ คุณต้องเพิ่มคำอธิบายลงใน bigtop.bom และ ./bigtop-packages คุณสามารถลองทำสิ่งนี้ได้โดยการเปรียบเทียบกับส่วนประกอบที่มีอยู่ ลองคิดดูสิ มันไม่ยากอย่างที่คิดเมื่อเห็นแวบแรก

คุณคิดอย่างไร? เรายินดีที่จะเห็นความคิดเห็นของคุณในความคิดเห็นและขอขอบคุณสำหรับความสนใจของคุณ!

บทความนี้จัดทำโดยทีมจัดการข้อมูล Rostelecom

ที่มา: will.com

เพิ่มความคิดเห็น