ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย

Hadoop เป็น Framework สำหรับสร้างการประมวลผลแบบกระจาย (Distributed Processing) กับข้อมูลขนาดใหญ่ (Large Data Sets) สามารถเริ่มต้นจากทดสอบบนเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนเป็นระบบ Cluster ได้[1] อธิบายง่ายๆได้ว่า Hadoop ประกอบด้วย ส่วนประมวลผลแบบกระจายเรียกว่า YARN (หรือ MapReduce) และ ส่วนเก็บข้อมูลแบบกระจายเรียกว่า HDFS (Hadoop Distributed File System) สำหรับการสร้าง Hadoop Cluster ในบทความนี้ใช้ Hadoop version 2.7.2 บน Ubuntu 16.04 โดย Cluster จะประกอบด้วย 1 Master และ N Slaves โดยจะใช้วิธีการสร้างเครื่องต้นฉบับ แล้ว Clone ไปเป็น Master/Slave ต่อไป 1.ขั้นตอนการสร้างตันฉบับสำหรับการ Clone 1.1. ติดตั้ง Ubuntu 16.04 ตามปรกติ สร้าง User คนแรกชื่อ mama 1.2. สร้างกลุ่มชื่อ hadoop sudo addgroup hadoop 1.3. สร้างผู้ใช้ชื่อ hduser อยู่ในกลุ่ม hadoop sudo adduser hduser –ingroup hadoop 1.4. ติดตั้ง Java sudo apt-get install default-jre openjdk-8-jdk-headless 1.5. ติดตั้ง hadoop wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz tar -zxvf hadoop-2.7.2.tar.gz sudo mv hadoop-2.7.2 /usr/local/hadoop sudo mkdir /usr/local/hadoop/etc/hadoop/tmp sudo chown -R hduser.hadoop /usr/local/hadoop 1.6. เพิ่มตัวแปรใน /etc/environment HADOOP_HOME=/usr/local/hadoop HADOOP_PREFIX=/usr/local/hadoop JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 1.7. แก้ไขค่าใน .bashrc su hduser; cd ~ แล้วแก้ไข .bashrc โดยเพิ่มบรรทัดต่อไปนี้ ท้ายไฟล์ export HADOOP_HOME=/usr/local/hadoop export HADOOP_PREFIX=/usr/local/hadoop export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 2.ขั้นตอนการสร้าง Master (namenode) 2.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname ให้เหมาะสม โดยเครื่องนี้ต้อง Static IP เช่น 192.168.1.101 2.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้ <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.107.116:9000</value> </property> </configuration> 2.3. แก้ไข /usr/local/hadoop/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.datanode.registration.ip-hostname-check</name> <value>false</value> </property> </configuration> 2.4. แก้ไข /usr/local/hadoop/etc/hadoop/slaves โดยใส่ IP ของเครื่องที่จะเป็น Slave หรือ datanode ลงไป เช่น 192.168.1.102 ถึง 192.168.1.111 เป็นต้น 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108 192.168.1.109 192.168.1.110 192.168.1.111  

Read More »

วิธีการตรวจสอบราคาเครื่องที่ให้บริการบนระบบ Public Cloud

“จะมีวิธีคิดราคา Public Cloud แต่ละเจ้าได้อย่างไรว่าต้องจ่ายเท่าไหร่ต่อเดือน” ในปกติแล้ว Cloud แต่ละเจ้าจะมีให้ทดสอบเลือกเครื่อง spec ที่ต้องการและคิดค่าใช้จ่ายคร่าว ๆ ซึ่งตัวเครื่องโดยมากคิดเป็นรายเดือน แต่ส่วนที่คิดตามการใช้งานจริงจะเป็น IOP ของการใช้งาน Storage และการส่งข้อมูลออก หรืออาจจะเป็นจำนวน Traffic สำหรับให้บริการ (นำเข้าข้อมูลไม่เสียตังค์) โดยขอสรุปเป็นบทความดังนี่้ครับ Target : ต้องใช้เครื่องประมาณ CPU 4 Core, RAM 4-8GB, HDD 100GB รัน Windows Server เพื่อรันระบบที่เขียนด้วย .NET Framework ราคา ณ วันที่ 19 มิถุนายน 2559 AWS Pricing Calculator https://calculator.s3.amazonaws.com/index.html จะเห็นว่าใช้เงินประมาณ $193.98 ต่อเดือน คิดเป็นเงิน 6799.75 บาทต่อเดือน ซึ่งจากการประเมินราคาใน Private Cloud ปัจจุบันที่มหาลัยให้บริการจะคิดที่ 3200 บาทต่อเดือน (4 CPU,8 GB,SAS 100G (Multi-Site Raid 5-Network RAID 1 ราคานี้ไม่รวมค่า OS) แต่ทางมหาวิทยาลัยยังไม่มีบริการ Storage ที่เป็น SSD ซึ่งถ้าเอาตามการใช้งานจริงที่ไม่ใช่ Database Server, File Server ยังไม่จะเป็นต้องใช้ถึง SSD แต่ในปัจจุบันราคา SSD ของ Server ก็ลดลงมาเยอะมาก โดยที่การจัดซื้ออนาคตคงจะเปลี่ยนเป็น ซื้อ SSD สำหรับทำ Private Cloud แทน ซึ่งราคานี้ยังไม่รวม EBS ที่ไว้สำหรับทำ Snapshot สำรองข้อมูล, Data Transfer ซึ่งดูแล้วที่จะขึ้นได้ในตอนนี้น่าจะมีแค่ Web Server ที่เป็นพวก CMS เพราะการโอนข้อมูลขึ้นลงไม่มากนัก (ยกเว้นที่เว็บที่เน้นการใช้งาน CMS Document Sharing ที่ใช้งานหนัก ๆ อาจจะไม่เหมาะ เพราะใช้ Traffic ขาออกเยอะจากการดาวน์โหลด) Azure Pricing Calculator https://azure.microsoft.com/en-us/pricing/calculator/ จะเห็นได้ว่าราคาใกล้เคียงกับ AWS แต่ได้เนื้อที่น้อยกว่า ถ้าเพิ่ม Storage อีก 16G จะต้องเพิ่มเงินอีก $1..28 ต่อเดือน รวมเป็น $191.74 Google Cloud Platform Pricing Calculator https://cloud.google.com/products/calculator/ จะเห็นได้ว่าถูกที่สุดแล้วเมื่อเทียบกับอีก 2 เจ้า Digital Ocean Pricing Calculator https://www.digitalocean.com/pricing/ ขอยกมาอีกเจ้าที่ใช้งานกันเยอะเนื่องจากราคาถูกจะเห็นว่าถูกที่สุด แต่สำหรับเจ้านี้จะไม่มี Windows ให้ใช้งาน สรุปค่าใช้จ่าย จากที่เขียนไว้ข้างต้นยังไม่สามารถสรุปได้ว่าเจ้าไหนดีกว่า เพราะมีปัจจัยอีกเยอะที่ไม่ได้ยกมาเช่น Data Transfer, ราคา Discount ซึ่งเหมือน Google จะมีส่วนลดสำหรับเครื่องที่สอง, Downtime, Speed จึงยกมาเป็นตัวอย่างวิธีพิจารณาคร่าว ๆ ส่วนถ้าซื้อจริงก็คงต้องเตรียมแผนให้สามารถย้ายได้ด้วยในกรณีที่ Cloud ที่ใช้อยู่บริการได้ไม่ตรงกับความต้องการ

Read More »

Cloud Computing การบริการประมวลผลจากเครื่องคอมพิวเตอร์บนเครือข่าย Internet

“อะไรคือ Cloud Computing และมันน่าใช้ยังไง แล้วต้องเลือกแบบไหนถึงจะเหมาะกับองค์กร” ขอขอบคุณข้อมูล Sipa จากการอบรม Cloud Computing รุ่นที่ 1 และขอขอบคุณข้อมูลจากท่านวิทยากร ผศ.ดร.ภุชงค์ อุทโยภาส ม.เกษตรศาสตร์   แนวคิดและความหมายของ Cloud Computing Cloud Computing เป็นบริการประมวลผลจากเครื่องคอมพิวเตอร์บนเครือข่ายอินเทอร์เน็ต รวมถึงการ ใช้งานทรัพยากรเครื่องคอมพิวเตอร์ร่วมกันโดยไม่มีข้อจำกัด โดยสามารถเลือกปรับแต่งการใช้งานได้ตามต้องการ และสามารถเข้าถึงได้จากที่ใดก็ได้ ซึ่งสามารถสรุปคุณสมบัติเป็นข้อ ๆ ตามคำนิยามของ NIST (National Institute of Standards and Technology) * ได้ดังนี้ On-demand self-service – สามารถใช้งานทรัพยากรได้ตามที่ต้องการ Broad network access – สามารถเข้าถึงจากที่ใดก็ได้ Resource pooling – สามารถนำทรัพยากรหลาย ๆ อย่างมารวมกันเพื่อใช้งานร่วมกัน Rapid elasticity – สามารถปรับเปลี่ยนได้ตลอดเวลาที่ต้องการ Measured Service – สามารถวัดปริมาณการใช้งานได้ทุกบริการ (เพื่อสามารถนำไปคิดค่าใช้จ่ายได้ด้วย) Reference : * The NIST Definition of Cloud Computing, http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf สถาปัตยกรรม Cloud Ecosystem ตามคำนิยามของ NIST ได้มีการกำหนด Cloud Ecosystem หรือเรียกว่า Cloud Service Model ได้ 3 รูปแบบดังนี้ Software As A Service (SAAS) เป็นบริการใช้งานซอฟต์แวร์ประยุกต์ (Application) ที่ผู้ให้บริการจัดหาให้ โดยสามารถเข้าถึงได้จาก Web Browser รวมถึง Application ทั้งที่อยู่ในเครื่องคอมพิวเตอร์หรืออุปกรณ์มือถือ การบริการรูปแบบนี้ผู้ใช้จะไม่สามารถจัดการเครื่องหรือระบบปฏิบัติการได้ ทุกอย่างผู้ให้บริการจัดการให้ทั้งหมด Platform As A Service (PAAS) เป็นบริการเครื่องมือสำหรับพัฒนาระบบ โดยผู้ใช้ไม่สามารถเข้าถึงการจัดการโครงสร้างพื้นฐานใด ๆ ได้ เช่นระบบเครือข่าย เครื่องเซิร์ฟเวอร์ ระบบปฏิบัติการ โดยผู้ให้บริการจะจัดการให้ทั้งหมด Infrastructure As A Service (IAAS) เป็นบริการที่ผู้ใช้สามารถจัดการระบบปฏิบัติการ ระบบเครือข่าย รวมถึงจัดหาโปรแกรมประยุกต์ เพื่อสามารถดูแลควบคุมการปรับแต่งระบบให้สามารถรองรับความต้องการที่หลากหลาย แต่การจัดหาทรัพยากร รวมถึงโครงสร้างพื้นฐานยังเป็น หน้าที่ของผู้ให้บริการจัดหาให้ตามความต้องการของผู้ใช้ รูปแบบของการให้บริการ สามารถแบ่งรูปแบบการให้บริการ (Deployment Models) ออกแบบ 4 รูปแบบได้ดังนี้ Private cloud เป็นการใช้งานระบบภายใต้โครงสร้างพื้นฐานขององค์กร ผู้ใช้อาจเป็นผู้ดูแลด้วยตนเอง หรือจ้างบุคคลที่สามดูแลก็ได้ อุปกรณ์อาจจะติดตั้งภายในสำนักงานหรืออยู่ภายนอกทั้งหมด หรือบางส่วนก็ได้ Community cloud เป็นการใช้งานระบบภายใต้การร่วมการของกลุ่มสมาชิก โดยมีข้อปฏิบัติร่วมกัน ตามเงื่อนไขของรัฐ หรือขององค์กร โดยสมาชิกดูแลบริหารจัดการโครงสร้างด้วยสมาชิกเอง หรือทำผ่านบุคคลที่สาม โดยอุปกรณ์อาจจะติดตั้งภายในสถานที่ของชุมชน หรือนอกสถานที่ก็ได้ Public cloud เป็นการใช้งานระบบร่วมกันกับสาธารณะชน องค์กรทั่วไปและกลุ่มองค์กรขนาดใหญ่ โดยผู้ให้บริการเป็นผู้ลงทุนโครงสร้างพื้นฐานไอทีและระบบซอฟต์แวร์ที่เกี่ยวข้องทั้งหมด Hybrid cloud เป็นการใช้งานผสมผสานระหว่าง Private cloud, Public cloud หรือ Hybrid cloud โดยขึ้นอยู่กับผู้ใช้บริการต้องการด้านใด โดยอาจจะทำงานเป็นอิสระ หรือมีการเชื่อมโยงเข้าหากัน แต่จะต้องสามารถทำงานร่วมกันในระดับข้อมูลและระบบซอฟต์แวร์ประยุกต์ได้ โดยการใช้งานทั่วไปมักจะใช้ Private cloud ก่อน จนเมื่อต้องการเพิ่ม Capacity ชั่วคราวจึงใช้ Public cloud เพิ่มเติม โครงสร้างของระบบ Cloud โดยมีการแบ่งออกเป็น Front End และ Back End เชื่อมต่อกันด้วยอินเทอร์เน็ต โดยแบ่งอุปกรณ์พื้นฐาน ได้ดังนี้ 1) Server 2) Storage 3) Network 4) Cloud runtime ซึ่งจะเป็น

Read More »