เริ่มต้นกับ Big Data กับ Python


หลังจากเป็นมือใหม่มาราวๆ 2 สัปดาห์ ก็พอจะมาบอกได้ว่ามันน่าจะเริ่มจากตรงไหนอะไรยังไงนะ เนื่องเพราะแฟนเรียน Big Data นั่นแหละ เราเลยต้องรู้ด้วย

เนื่องจากเคนใช้ iMac เพราะงั้นทุกโปรแกรมที่ใช้ก็จะอิงจาก Mac เป็นหลักนะ ใครใช้ Windows ก็อาจจะต้องไปลองหาๆ เพิ่มเติมเอานะ

จะพยายามพิมพ์เอาไว้เพื่อให้อ่านแล้วเริ่มต้นได้ง่ายที่สุดนะ และทุกอย่างที่อยู่ในบทความเป็นความเข้าใจจากที่เรียนรู้มา #รู้ไม่มากแต่อยากมาเล่า 555+ ซึ่งถ้าผิด ก็ไว้จะมาอัพเดทแก้นะ

ประเภทของข้อมูล Big Data

  • ปริมาณ (Volume)
  • ความเร็ว (Velocity)
  • ความหลากหลาย (Variety)
  • ความถูกต้อง (Veracity)
  • คุณค่า (Value)
  • ความแปรผันได้ (Variability)

สิ่งที่ต้องรู้จักเบื้องต้น

  • โปรแกรม Virtual Box / Parallels สำหรับสร้างเครื่องเสมือนบนเครื่องของเราเพื่อติดตั้ง Ubuntu ใช้ตัวไหนก็ได้ แต่ตัว Parallels ที่เป็นตัวเสียเงิน ดีกว่ามาก
  • OS Linux – Ubuntu เวอร์ชั่น LTS
  • Hadoop
  • Mysql / MongoDB
  • Python
  • Package ต่างๆ เช่น pandas, numpy, matplotlib, pyspark ฯลฯ
  • Sqoop
  • Hive

Hadoop

คือ โปรแกรมบริหารจัดการเครื่อง Server หลายๆ เครื่องให้มันทำงานร่วมกัน ทำให้เรามองเห็นเป็นเครื่องๆ เดียว ทำให้เราเก็บข้อมูลขนาดใหญ่ และกระจายไปเก็บในหลายๆ เครื่อง ทำให้เก็บข้อมูลได้ใหญ่ขึ้น และเข้าถึงได้เร็วขึ้น โดยตัวฮาดูปจะมีที่เก็บไฟล์ของตัวเองชื่อ HDFS (Hadoop Distributed File System)

เริ่มขั้นตอนติดตั้งซอฟท์แวร์

ขั้นตอนติดตั้งและใช้งาน Ubuntu ลง Virtual Machine ขอไม่บรรยายละกันยาวเกิ๊น เอาเป็นว่าถือว่ามี Ubuntu พร้อมใช้งานกันแล้ว ลำดับจะตามนี้

  • สร้าง User เฉพาะสำหรับ hadoop
    • sudo -I
    • adduser hadoopuser
    • usermod -aG sudo hadoopuser
    • su hadoopuser
  • ติดตั้ง Java SDK
    • sudo apt-get install openjdk-8-jdk
    • java -version
  • ติดตั้ง ssh
    • sudo apt-get install ssh
  • ติดตั้ง pdsh
    • sudo apt-get install pdsh
  • ดาวน์โหลดและติดตั้ง hadoop
    • cd ~
    • mkdir Downloads
    • cd Downloads
    • wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop- 3.3.0.tar.gz
    • tar -xzvf hadoop-3.3.0.tar.gz
    • mv hadoop-3.3.0 /home/hadoopuser/hadoop
  • แก้สคริปต์ของ hadoop
    • cd /home/hadoopuser/hadoop/etc/hadoop/
    • sudo nano core-site.xml
      • เพิ่ม property เหล่านี้อยู่ภายใน <configuration></configuration>
      • <property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
      • Ctrl+O -> Enter เพื่อ Save
      • Ctrl+X เพื่อออก
    • sudo nano hdfs-site.xml
      • เพิ่ม property เหล่านี้อยู่ภายใน <configuration></configuration>
      • <property><name>dfs.namenode.name.dir</name><value>/home/hadoopuser/hadoop/data/namenode</value></property>
      • <property><name>dfs.datanode.data.dir</name><value>/home/hadoopuser/hadoop/data/datanode</value></property>
      • <property><name>dfs.replication</name><value>/1</value></property>
      • Ctrl+O -> Enter เพื่อ Save
      • Ctrl+X เพื่อออก
    • sudo nano mapred-site.xml
      • เพิ่ม property เหล่านี้อยู่ภายใน <configuration></configuration>
      • <property><name>mapreduce.framework.name</name><value>yarn</value></property>
      • <property><name>mapreduce.application.classpath</name><value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value></property>
      • Ctrl+O -> Enter เพื่อ Save
      • Ctrl+X เพื่อออก
    • sudo nano yarn-site.xml
      • เพิ่ม property เหล่านี้อยู่ภายใน <configuration></configuration>
      • <property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
      • <property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
      • Ctrl+O -> Enter เพื่อ Save
      • Ctrl+X เพื่อออก
    • sudo nano hadoop-env.sh
      • export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
  • สร้าง ssh
    • ssh-keygen -t rsa -P “”
    • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    • ssh localhost
  • สร้าง Environment (สภาพแวดล้อม) ส่วนตัว
    • sudo nano /etc/environment
      • PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lo cal/games”
      • JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
      • JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
  • แก้ไข .bashrc
    • sudo nano ~/.bashrc
      • export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
      • export HADOOP_HOME=/home/hadoopuser/hadoop
      • export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
      • export HADOOP_COMMON_HOME=$HADOOP_HOME
      • export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
      • export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
      • export HADOOP_HDFS_HOME=$HADOOP_HOME
      • export HADOOP_INSTALL=$HADOOP_HOME
      • export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
      • export HADOOP_MAPRED_HOME=$HADOOP_HOME
      • export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib/native” export HADOOP_YARN_HOME=$HADOOP_HOME
      • export YARN_HOME=$HADOOP_HOME
      • export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
      • export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH export PATH=$PATH:$SPARK_HOME/bin
      • export PATH=$PATH:$SPARK_HOME/sbin
      • export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
      • pdsh -q -w localhost
      • export PDSH_RCMD_TYPE=ssh
    • source ~/.bashrc
  • เปลี่ยนสิทธิ์ของโฟลเดอร์ที่เก็บ hadoop
    • sudo chown hadoopuser:root -R /home/hadoopuser/hadoop
    • sudo chmod g+rwx -R /home/hadoopuser/hadoop

PySpark กับ Pandas ต่างกันไหม

เท่าที่รู้ตอนนี้คือความสามารถเหมือนกันเลย ใช้อ่านและประมวลผลข้อมูลเหมือนกัน คำสั่งยังคล้ายๆ กันเลย อ่านๆ ไป ก็เจอแค่ว่า PySpark มันเร็วกว่า Pandas มาก แค่นั้นเอง

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Navigate