Hadoop - คลัสเตอร์หลายโหนด

บทนี้อธิบายการตั้งค่าคลัสเตอร์ Hadoop Multi-Node บนสภาพแวดล้อมแบบกระจาย

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

  • Hadoop มาสเตอร์: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

ทำตามขั้นตอนด้านล่างเพื่อตั้งค่าคลัสเตอร์ Hadoop Multi-Node

การติดตั้ง Java

Java เป็นข้อกำหนดเบื้องต้นหลักสำหรับ Hadoop ก่อนอื่นคุณควรตรวจสอบการมีอยู่ของ java ในระบบของคุณโดยใช้ "java -version" ไวยากรณ์ของคำสั่งเวอร์ชัน java ได้รับด้านล่าง

$ java -version

หากทุกอย่างทำงานได้ดีจะให้ผลลัพธ์ดังต่อไปนี้

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

หากไม่ได้ติดตั้ง java ในระบบของคุณให้ทำตามขั้นตอนที่กำหนดสำหรับการติดตั้ง java

ขั้นตอนที่ 1

ดาวน์โหลด java (JDK <เวอร์ชันล่าสุด> - X64.tar.gz) โดยไปที่ลิงค์ต่อไปนี้www.oracle.com

แล้ว jdk-7u71-linux-x64.tar.gz จะถูกดาวน์โหลดลงในระบบของคุณ

ขั้นตอนที่ 2

โดยทั่วไปคุณจะพบไฟล์ java ที่ดาวน์โหลดมาในโฟลเดอร์ Downloads ตรวจสอบและแตกไฟล์jdk-7u71-linux-x64.gz ไฟล์โดยใช้คำสั่งต่อไปนี้

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

ขั้นตอนที่ 3

เพื่อให้ผู้ใช้ทุกคนสามารถใช้ java ได้คุณต้องย้ายไปที่ตำแหน่ง“ / usr / local /” เปิดรูทและพิมพ์คำสั่งต่อไปนี้

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

ขั้นตอนที่ 4

สำหรับการตั้งค่า PATH และ JAVA_HOME ตัวแปรเพิ่มคำสั่งต่อไปนี้ ~/.bashrc ไฟล์.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

ตอนนี้ตรวจสอบไฟล์ java -versionคำสั่งจากเทอร์มินัลตามที่อธิบายไว้ข้างต้น ทำตามขั้นตอนข้างต้นและติดตั้ง java ในโหนดคลัสเตอร์ทั้งหมดของคุณ

การสร้างบัญชีผู้ใช้

สร้างบัญชีผู้ใช้ระบบทั้งระบบหลักและระบบทาสเพื่อใช้การติดตั้ง Hadoop

# useradd hadoop 
# passwd hadoop

การแมปโหนด

คุณต้องแก้ไข hosts ไฟล์ใน /etc/ โฟลเดอร์บนโหนดทั้งหมดระบุที่อยู่ IP ของแต่ละระบบตามด้วยชื่อโฮสต์

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

การกำหนดค่าการเข้าสู่ระบบโดยใช้คีย์

ตั้งค่า ssh ในทุกโหนดเพื่อให้สามารถสื่อสารกันได้โดยไม่ต้องแจ้งรหัสผ่าน

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

การติดตั้ง Hadoop

ในเซิร์ฟเวอร์หลักให้ดาวน์โหลดและติดตั้ง Hadoop โดยใช้คำสั่งต่อไปนี้

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

การกำหนดค่า Hadoop

คุณต้องกำหนดค่าเซิร์ฟเวอร์ Hadoop โดยทำการเปลี่ยนแปลงต่อไปนี้ตามที่ระบุด้านล่าง

core-site.xml

เปิด core-site.xml ไฟล์และแก้ไขตามที่แสดงด้านล่าง

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

เปิด hdfs-site.xml ไฟล์และแก้ไขตามที่แสดงด้านล่าง

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

เปิด mapred-site.xml ไฟล์และแก้ไขตามที่แสดงด้านล่าง

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

เปิด hadoop-env.sh ไฟล์และแก้ไข JAVA_HOME, HADOOP_CONF_DIR และ HADOOP_OPTS ดังที่แสดงด้านล่าง

Note - ตั้งค่า JAVA_HOME ตามการกำหนดค่าระบบของคุณ

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

การติดตั้ง Hadoop บนเซิร์ฟเวอร์ Slave

ติดตั้ง Hadoop บนเซิร์ฟเวอร์ทาสทั้งหมดโดยทำตามคำสั่งที่กำหนด

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

การกำหนดค่า Hadoop บนเซิร์ฟเวอร์หลัก

เปิดเซิร์ฟเวอร์หลักและกำหนดค่าโดยทำตามคำสั่งที่กำหนด

# su hadoop 
$ cd /opt/hadoop/hadoop

การกำหนดค่าโหนดหลัก

$ vi etc/hadoop/masters

hadoop-master

การกำหนดค่า Slave Node

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Format Name Node บน Hadoop Master

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

การเริ่มบริการ Hadoop

คำสั่งต่อไปนี้คือการเริ่มบริการ Hadoop ทั้งหมดบน Hadoop-Master

$ cd $HADOOP_HOME/sbin
$ start-all.sh

การเพิ่ม DataNode ใหม่ใน Hadoop Cluster

ด้านล่างนี้เป็นขั้นตอนที่ต้องปฏิบัติตามสำหรับการเพิ่มโหนดใหม่ในคลัสเตอร์ Hadoop

เครือข่าย

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

สำหรับการกำหนดค่าโหนดใหม่ -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

การเพิ่มผู้ใช้และการเข้าถึง SSH

เพิ่มผู้ใช้

ในโหนดใหม่ให้เพิ่มผู้ใช้ "hadoop" และตั้งรหัสผ่านของผู้ใช้ Hadoop เป็น "hadoop123" หรืออะไรก็ได้ที่คุณต้องการโดยใช้คำสั่งต่อไปนี้

useradd hadoop
passwd hadoop

ตั้งค่ารหัสผ่านน้อยกว่าการเชื่อมต่อจากหลักไปยังทาสใหม่

ดำเนินการต่อไปนี้บนต้นแบบ

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

ดำเนินการต่อไปนี้กับทาส

เข้าสู่ระบบ hadoop หากไม่เป็นเช่นนั้นให้เข้าสู่ระบบผู้ใช้ hadoop

su hadoop ssh -X [email protected]

คัดลอกเนื้อหาของคีย์สาธารณะลงในไฟล์ "$HOME/.ssh/authorized_keys" จากนั้นเปลี่ยนการอนุญาตสำหรับสิ่งเดียวกันโดยดำเนินการคำสั่งต่อไปนี้

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

ตรวจสอบการเข้าสู่ระบบ ssh จากเครื่องหลัก ตรวจสอบว่าคุณสามารถ ssh ไปยังโหนดใหม่โดยไม่ต้องใช้รหัสผ่านจากต้นแบบได้หรือไม่

ssh [email protected] or hadoop@slave3

ตั้งชื่อโฮสต์ของโหนดใหม่

คุณสามารถตั้งชื่อโฮสต์ในไฟล์ /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

เพื่อให้การเปลี่ยนแปลงมีผลให้รีสตาร์ทเครื่องหรือรันคำสั่ง hostname ไปยังเครื่องใหม่โดยใช้ชื่อโฮสต์ตามลำดับ (การรีสตาร์ทเป็นตัวเลือกที่ดี)

บนเครื่องโหนด slave3 -

ชื่อโฮสต์ slave3.in

อัปเดต /etc/hosts บนทุกเครื่องของคลัสเตอร์โดยมีบรรทัดต่อไปนี้ -

192.168.1.102 slave3.in slave3

ตอนนี้ลอง ping เครื่องด้วยชื่อโฮสต์เพื่อตรวจสอบว่ากำลังแก้ไขเป็น IP หรือไม่

บนเครื่องโหนดใหม่ -

ping master.in

เริ่ม DataNode บนโหนดใหม่

เริ่มต้น datanode daemon ด้วยตนเองโดยใช้ $HADOOP_HOME/bin/hadoop-daemon.sh script. โดยอัตโนมัติจะติดต่อมาสเตอร์ (NameNode) และเข้าร่วมคลัสเตอร์ เราควรเพิ่มโหนดใหม่ในไฟล์ conf / slaves ในเซิร์ฟเวอร์หลัก คำสั่งตามสคริปต์จะจดจำโหนดใหม่

เข้าสู่ระบบโหนดใหม่

su hadoop or ssh -X [email protected]

เริ่ม HDFS บนโหนดทาสที่เพิ่มใหม่โดยใช้คำสั่งต่อไปนี้

./bin/hadoop-daemon.sh start datanode

ตรวจสอบผลลัพธ์ของคำสั่ง jps บนโหนดใหม่ มีลักษณะดังนี้

$ jps
7141 DataNode
10312 Jps

การลบ DataNode ออกจาก Hadoop Cluster

เราสามารถลบโหนดออกจากคลัสเตอร์ได้ทันทีในขณะที่กำลังทำงานโดยที่ข้อมูลไม่สูญหาย HDFS มีคุณสมบัติการเลิกใช้งานซึ่งช่วยให้มั่นใจได้ว่าการลบโหนดจะดำเนินการอย่างปลอดภัย ในการใช้งานให้ทำตามขั้นตอนด้านล่าง -

ขั้นตอนที่ 1 - เข้าสู่ระบบหลัก

ล็อกอินไปยังผู้ใช้เครื่องหลักที่ติดตั้ง Hadoop

$ su hadoop

ขั้นตอนที่ 2 - เปลี่ยนการกำหนดค่าคลัสเตอร์

ต้องกำหนดค่าไฟล์ยกเว้นก่อนเริ่มคลัสเตอร์ เพิ่มคีย์ชื่อ dfs.hosts.exclude ในไฟล์$HADOOP_HOME/etc/hadoop/hdfs-site.xmlไฟล์. ค่าที่เกี่ยวข้องกับคีย์นี้จัดเตรียมพา ธ แบบเต็มไปยังไฟล์บนระบบไฟล์โลคัลของ NameNode ซึ่งมีรายชื่อเครื่องที่ไม่ได้รับอนุญาตให้เชื่อมต่อกับ HDFS

ตัวอย่างเช่นเพิ่มบรรทัดเหล่านี้ลงใน etc/hadoop/hdfs-site.xml ไฟล์.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

ขั้นตอนที่ 3 - กำหนดโฮสต์ที่จะปลดประจำการ

แต่ละเครื่องที่จะปลดประจำการควรเพิ่มลงในไฟล์ที่ระบุโดย hdfs_exclude.txt หนึ่งชื่อโดเมนต่อบรรทัด สิ่งนี้จะป้องกันไม่ให้เชื่อมต่อกับ NameNode เนื้อหาของไฟล์"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" แสดงอยู่ด้านล่างหากคุณต้องการลบ DataNode2

slave2.in

ขั้นตอนที่ 4 - บังคับให้โหลดการกำหนดค่าใหม่

รันคำสั่ง "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" ไม่มีเครื่องหมายคำพูด

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

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

บน slave2.inตรวจสอบเอาต์พุตคำสั่ง jps หลังจากนั้นสักครู่คุณจะเห็นกระบวนการ DataNode ปิดโดยอัตโนมัติ

ขั้นตอนที่ 5 - ปิดโหนด

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

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

ขั้นตอนที่ 6 - แก้ไขไม่รวมไฟล์อีกครั้ง

เมื่อปลดประจำการเครื่องแล้วสามารถลบออกจากไฟล์ "excludes" ได้ วิ่ง"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"อีกครั้งจะอ่านไฟล์ที่ไม่รวมกลับเข้าไปใน NameNode; อนุญาตให้ DataNodes เข้าร่วมคลัสเตอร์อีกครั้งหลังจากการบำรุงรักษาเสร็จสิ้นหรือต้องการความจุเพิ่มเติมในคลัสเตอร์อีกครั้งเป็นต้น

Special Note- หากทำตามกระบวนการข้างต้นและกระบวนการทาสก์แทร็กเกอร์ยังคงทำงานอยู่บนโหนดจำเป็นต้องปิดตัวลง วิธีหนึ่งคือปลดการเชื่อมต่อเครื่องตามที่เราทำในขั้นตอนข้างต้น ปรมาจารย์จะรับรู้กระบวนการโดยอัตโนมัติและจะประกาศว่าตาย ไม่จำเป็นต้องทำตามขั้นตอนเดียวกันในการลบ Tasktracker เนื่องจากไม่สำคัญมากเมื่อเทียบกับ DataNode DataNode มีข้อมูลที่คุณต้องการลบออกอย่างปลอดภัยโดยไม่มีข้อมูลสูญหาย

ทาสก์แทร็กเกอร์สามารถรัน / ปิดเครื่องได้ทันทีโดยใช้คำสั่งต่อไปนี้เมื่อใดก็ได้

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker