SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
• Education
– NCU (MIS)
– NCCU (CS)
• Experience Big data & DW
– Raritan, TWM, FET
• Teaching
– III, tcfst, ntunhs
• Community
– TW Spark User Group
– TW Hadoop User Group
• Research
– IoT
– A.I. robot
– Machine learning
• Skills
– PG, TPM, DM, ML, Big data architecture and IOT
名稱 Arduino Uno Arduino Yun RS 3
價格 $25 $69 $35
處理器 ATmega328p ATmega32u4 博通 BCM2387 (4c)
顯示晶片 NA NA VideoCore IV (2c)
記憶體 32KB 64 MB 1GB
儲存單元 SRAM: 2KB
EEPROM: 1KB
SRAM: 2.5KB
EEPORM: 1KB
NA (外接記憶卡)
有線網路 NA NA 10/100 乙太網路
無線網路 NA • IEEE 802.11b/g/n
(Atheros AR9331)
• Flash: 32MB
• IEEE802.11
• 藍芽4.1
應用 感知端 感知端、控制端 感知端、控制端
其他 USB*4
4c: 4 cores
http://electronics.stackexchange.com/questions/95038/arduino-uno-board-heating-up-and-code-not-uploading
http://oranwind.org/arduino-arduino-yun-ji-chu-jiao-xue/
https://www.element14.com
Spark
NN
SN
Spark
DN
Spark
DN
VMware Workstation
mysqlMQ
pahomaster
slaver1
slaver2
• NTP
• chkconfig ntpd on
• services ntpd start
• Edit host
• vi /etc/hosts
• Install jdk
• rpm -ivh /tmp/jdk-7u79-linux-x64.rpm
• ln -s /usr/java/jdk1.7.0_79 /usr/java/java
• Edit jdk profile
• vi /etc/profile
export JAVA_HOME=/usr/java/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
• Security
• setenforce 0
• vi /etc/selinux/config
• service iptables stop
• chkconfig iptables off
• Ssh Config
• vi /etc/ssh/ssh_config
• Keygen at master
• ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
• cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
• ssh localhost
SELINUX=disabled
StrictHostKeyChecking no
• Hadoop 安裝 (hadoop-2.6.4)
• tar -zxvf /tmp/hadoop-2.6.4.tar.gz -C /tmp
• mv /tmp/hadoop-2.6.4 /opt
• ln -s /opt/hadoop-2.6.4 /opt/hadoop
• vi /etc/profile
• source /etc/profile
export HADOOP_HOME=/opt/hadoop/
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
• Hadoop 設定
• vi /opt/hadoop/libexec/hadoop-config.sh
• vi /opt/hadoop/etc/hadoop/hadoop-env.sh
• 建立 tmp 目錄
• mkdir -p $HADOOP_HOME/tmp
export JAVA_HOME=/usr/java/java
export JAVA_HOME=/usr/java/java
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
• DN 設定
• vi /opt/hadoop/etc/hadoop/slaves
• Hadoop 參數設定
• vi /opt/hadoop/etc/hadoop/core-site.xml
slaver1
slaver2
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
• vi /opt/hadoop/etc/hadoop/hdfs-site.xml
• vi /opt/hadoop/etc/hadoop/mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
• vi /opt/hadoop/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>${hadoop.tmp.dir}/nodemanager/local</value>
</property>
<property>
<name>yarn.nodemanager.address</name>
<value>0.0.0.0:8034</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>${hadoop.tmp.dir}/nodemanager/remote</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>${hadoop.tmp.dir}/nodemanager/logs</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
• 複製 public key
• ssh-copy-id -i ~/.ssh/id_rsa.pub root@slaver1
• ssh-copy-id -i ~/.ssh/id_rsa.pub root@slaver2
• 複製 hadoop
• scp -rp /opt/hadoop-2.6.4/ root@slaver2:/opt
• scp -rp /opt/hadoop-2.6.4/ root@slaver2:/opt
• 確定軟連結
• ln -s /opt/hadoop-2.6.4 /opt/hadoop
• 複製 profile
• scp /etc/profile root@slaver1:/etc/profile
• scp /etc/profile root@slaver2:/etc/profile
• 格式化 namenode
• hadoop namenode -format
• 啟動 hadoop
• start-all.sh
• 檢查服務
• jps
• 關閉 hadoop 服務,因為我們要進行 spark 安裝
• stop-all.sh
master slaver
• 安裝 spark (spark-1.6.1-bin-hadoop2.6)
• 設定
• 複製 spark
Spark Standalone 模式
• Worker 設定
• 複製
• 設定環境變數
• 啟動
• 啟動過程
• 檢查
• jps master worker
• Spark streaming 來的資料,要定期寫入 Mysql
• 開啟 Eclipse,並匯入 ConnectPool 專案
• 調整內部 ip 資訊後,重新編譯產生 jar 檔
• Simple Build Tool 常用來編譯 Scala 程式
• 下載 sbt
• https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-
launch/0.13.11/sbt-
launch.jar?_ga=1.166007678.1150428719.1462532280
• 新增資料夾並放入此目錄
• mkdir -p /usr/local/sbt
• 新增並編輯 sbt 檔案於此目錄
• vi sbt
• chmod u+x sbt
• 檢查版本並初始化 (sbt 會下載一些必須函示庫,因此需要一點時間)
• ./sbt -version
http://www.scala-sbt.org/
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
• 直接將 sparkapp 目錄放到家目錄當中
• 請注意,使用 sbt 編譯必須按照此目錄結構的方式
• 準備編譯檔
• vi simple.sbt
• 開始編譯
• cd ~/sparkapp
• /usr/local/sbt/sbt package
name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.5"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
示意圖
• 取出結果 jar 檔
• 複製此 jar 檔到 spark 執行目錄
• cp ./target/scala-2.10/writedatatomysql_2.10-1.0.jar
/usr/lib/spark/bin
• Spark Streaming 程式 (writedatatomysql_2.10-1.0.jar)
• 寫入 Mysql 程式 (ConnectPool.jar)
• 進入 spark 程式執行區
• cd /usr/lib/spark/bin
• 執行
• ./spark-submit --class com.dt.spark.streaming.WriteDataToMySQL
--jars
/root/sparkapp2/lib/ConnectPool.jar ./writedatatomysql_2.10-
1.0.jar
• 確定沒問題後,先關掉此程式,等前後端 Arduino 完成後才打開
TCP Socket
http://bytecontinnum.com/2014/11/eai-for-iot-pubsub-on-mqtt/
http://www.rfwireless-world.com/Terminology/MQTT-protocol.html
1. 是輕量級Message Queue
2. 開放、簡單、輕量、易於實現
3. 適合一對多訊息發布
4. 使用 TCP/IP
5. 小型傳輸,header 固定 2 bytes
• 適合大量且連續(輕量級)資料傳輸
• IPV4 package
相關 mqtt 學習請參考
http://www.hivemq.com/blog/mqtt-essentials/
http://cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pimqtt-android.html
QoS
Level
Message
Delivery
Delivery
Semantics
Delivery
Guarantees
0 <= 1 最多一次
1. 會發生訊息遺失或重複,但不會因此而產生
副作用,因為很快下一個訊息陸續接著發送出來
2. 適合 IoT 感知器
1 >= 1 最少一次 保證訊息會到達,但訊息可能會重複發生
2 == 1 只有一次 確定訊息只到達一次
Qos 依照 Client 端而決定,例如: Client 端以 Qos 0 接收,因此都將以 Qos 0 為主
• 新增 mosquitto安裝來源 (建議裝在 slaver1)
• vi /etc/yum.repos.d
• yum install mosquitto mosquitto-clients libmosquitto-devel
libmosquittopp-devel python-mosquitto
• ps -aux | grep mosquitto
• 啟動
• mosquitto -c /etc/mosquitto/mosquitto.conf
• 新增編輯
• vi /etc/mosquitto/mosquitto.conf
[home_oojah_mqtt]
name=mqtt (CentOS_CentOS-6)
type=rpm-md baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6//repodata/repomd.xml.key
enabled=1
listener 1883
protocol mqtt
請在 linux 端開啟 ulimit -n20000 -s512
• Bridge 功能 (不用自己實作 keepalive 功能)
• $SYS/broker/connection/<clientid>/state
• 參考: http://mosquitto.org/man/mosquitto-8.html
• Message queue 是以 topic 進行區分,每個 client 均可訂閱 topic 獲取資料,
想法是以廣播方式,廣播給所有訂閱的 client
• 相關的 message queue 有: mqtt、xmpp、gcm 等等傳輸方式
• 以 mqtt 實作的產品有 Apache Apollo、HiveMQ、Mosca、Mosquitto、
RabbitMQ (請注意 kafka 目前並無支援)
• Paho 是一個免費的開放軟體
• 透過 Paho 方便與 mqtt 服務溝通
• 安裝
• pip search mqtt
• pip install paho-mqtt
• touch /root/iot.log (在 master)
• Paho 自此專案扮演的腳色
• 由 Paho 讀取 Mosquitto 上的資料,以 append 方式寫入檔案
• 透過 tail -F 方式將檔案灌入 spark streaming (在 master 執行)
• 測試程式碼
• 參考 paho1.py
http://www.eclipse.org/paho/
ssh root@192.168.100.163 tail -F /root/iot.log | nc 192.168.100.170 9999 -lk
亦可透過 flume 直接寫入 spark streaming
若要用網頁版,可參考 mqttws31-min.js
• 安裝 Mysql (5.1.38) (建議安裝於 slaver2)
• yum -y install mysql mysql-server
• chkconfig mysqld on
• 啟動 mysql
• service mysqld start
• 建立 root 登入密碼
• mysqladmin -u root password '1234'
• 建立資料庫與table
• create database spark;
• use spark;
• create table
create table searchKeyWord(insert_time date, keyword varchar(30), search_count int(11));
依照需求可改變持久層設計,重新改寫
ConnectPool.jar 即可
• 用來控制燈泡亮燈 (此做法是 gateway 作法)
• 請執行
• python iot_control_all_system.py
iot_control_all_system.py
read
web control
也可以透過 anduino (mqtt subscriber) 決定亮燈
• 準備 Arduino 與溫溼度感知器 (DHT11 )
• 準備 ethernet shield
• 開啟 Arduino IDE 並燒入程式
• 參考 mqttproducer.ino
亦可使用 ESP8266 (無線傳輸) 取代 ethernet
IDE 函式庫
Arduino 1.6.9
dht
PubSubClient
• 準備 Arduino、relay、燈泡
• 準備 ethernet shield
• 開啟 Arduino IDE 並燒入程式
• 參考 LAMPBALL.ino
IDE 函式庫
Arduino 1.0.3
WebServer
Streaming
請注意! 此 IDE 版本需為 1.0.3
https://www.facebook.com/joanna.chang.779/videos/10208030593195649/
http://www.datanami.com/2015/11/30/spark-streaming-what-is-it-and-whos-using-it/
密切注意 spark 2.0,新版的 spark 強力支援 spark streaming 及時運算能力
Hadoop+spark實作

Más contenido relacionado

La actualidad más candente

Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Chu-Siang Lai
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性babyyellow li
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmarkLouis liu
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Zhaoyang Wang
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档xuebao_zx
 
Gdb principle
Gdb principleGdb principle
Gdb principlelibfetion
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版xingsu1021
 
UseNUMA做了什么?(2012-03-14)
UseNUMA做了什么?(2012-03-14)UseNUMA做了什么?(2012-03-14)
UseNUMA做了什么?(2012-03-14)Kris Mok
 
尚观Linux研究室 linux驱动程序全解析
尚观Linux研究室   linux驱动程序全解析尚观Linux研究室   linux驱动程序全解析
尚观Linux研究室 linux驱动程序全解析hangejnu
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Chu-Siang Lai
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] PytorchTzu-Wei Huang
 
Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Shoichi Chou
 
CloudStack Installation on Ubuntu
CloudStack Installation on UbuntuCloudStack Installation on Ubuntu
CloudStack Installation on Ubuntu康志強 大人
 
Introduction to FreeBSD commands
Introduction to FreeBSD commandsIntroduction to FreeBSD commands
Introduction to FreeBSD commands郁凱 黃
 
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Lucien Li
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & WindowsChu-Siang Lai
 

La actualidad más candente (20)

Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
Gdb principle
Gdb principleGdb principle
Gdb principle
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版
 
UseNUMA做了什么?(2012-03-14)
UseNUMA做了什么?(2012-03-14)UseNUMA做了什么?(2012-03-14)
UseNUMA做了什么?(2012-03-14)
 
尚观Linux研究室 linux驱动程序全解析
尚观Linux研究室   linux驱动程序全解析尚观Linux研究室   linux驱动程序全解析
尚观Linux研究室 linux驱动程序全解析
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] Pytorch
 
Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農
 
CloudStack Installation on Ubuntu
CloudStack Installation on UbuntuCloudStack Installation on Ubuntu
CloudStack Installation on Ubuntu
 
Virtualbox
VirtualboxVirtualbox
Virtualbox
 
Introduction to FreeBSD commands
Introduction to FreeBSD commandsIntroduction to FreeBSD commands
Introduction to FreeBSD commands
 
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Mongo db部署架构之优先方案
Mongo db部署架构之优先方案
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
 

Destacado

行動廣告演算法探討
行動廣告演算法探討行動廣告演算法探討
行動廣告演算法探討FEG
 
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享Kdan Mobile
 
行動廣告與大數據資料分析策略與執行
行動廣告與大數據資料分析策略與執行行動廣告與大數據資料分析策略與執行
行動廣告與大數據資料分析策略與執行台灣資料科學年會
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkJerry Wu
 
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探台灣資料科學年會
 
Kkpi
KkpiKkpi
Kkpipujil
 
Business is fun: Shopping in madrid
Business is fun: Shopping in madridBusiness is fun: Shopping in madrid
Business is fun: Shopping in madridsarasacristan
 
Securite et surete maritime
  Securite et surete maritime  Securite et surete maritime
Securite et surete maritimeRabah HELAL
 
Lookbook "The ballet of the Tsars"
Lookbook "The ballet of the Tsars"Lookbook "The ballet of the Tsars"
Lookbook "The ballet of the Tsars"Patricia Rosales
 
China input method
China input methodChina input method
China input methodPhodal Huang
 
Avaya cc control manager 6.2 brochure
Avaya cc control manager 6.2   brochureAvaya cc control manager 6.2   brochure
Avaya cc control manager 6.2 brochureraulhmata
 
ChinaUnix社区介绍
ChinaUnix社区介绍ChinaUnix社区介绍
ChinaUnix社区介绍send_linux
 
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps Mauricio Portugal Ribeiro
 
Academic Word List - Sublist 3
Academic Word List - Sublist 3Academic Word List - Sublist 3
Academic Word List - Sublist 3Pham Duc
 
How to unlock alcatel one touch fierce 7024w by unlock code
How to unlock alcatel one touch fierce 7024w by unlock codeHow to unlock alcatel one touch fierce 7024w by unlock code
How to unlock alcatel one touch fierce 7024w by unlock coderscooldesire
 
Some real ghost picture
Some real ghost pictureSome real ghost picture
Some real ghost pictureNimil Jain
 

Destacado (20)

行動廣告演算法探討
行動廣告演算法探討行動廣告演算法探討
行動廣告演算法探討
 
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享
Kdan Mobile - Growth Hack廣告投播之策略運用與實際案例分享
 
行動廣告與大數據資料分析策略與執行
行動廣告與大數據資料分析策略與執行行動廣告與大數據資料分析策略與執行
行動廣告與大數據資料分析策略與執行
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series Talk
 
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探
[DSC 2016] 系列活動:李泳泉 / 星火燎原 - Spark 機器學習初探
 
Kkpi
KkpiKkpi
Kkpi
 
Business is fun: Shopping in madrid
Business is fun: Shopping in madridBusiness is fun: Shopping in madrid
Business is fun: Shopping in madrid
 
Securite et surete maritime
  Securite et surete maritime  Securite et surete maritime
Securite et surete maritime
 
Lookbook "The ballet of the Tsars"
Lookbook "The ballet of the Tsars"Lookbook "The ballet of the Tsars"
Lookbook "The ballet of the Tsars"
 
China input method
China input methodChina input method
China input method
 
Avaya cc control manager 6.2 brochure
Avaya cc control manager 6.2   brochureAvaya cc control manager 6.2   brochure
Avaya cc control manager 6.2 brochure
 
ChinaUnix社区介绍
ChinaUnix社区介绍ChinaUnix社区介绍
ChinaUnix社区介绍
 
Abb v2
Abb v2Abb v2
Abb v2
 
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps
A Lei 12.766/12 e o nivel de detalhamento dos estudos de engenharia em ppps
 
Academic Word List - Sublist 3
Academic Word List - Sublist 3Academic Word List - Sublist 3
Academic Word List - Sublist 3
 
Business ppt-template-043
Business ppt-template-043Business ppt-template-043
Business ppt-template-043
 
2nd Easter A(2)
2nd Easter A(2)2nd Easter A(2)
2nd Easter A(2)
 
How to unlock alcatel one touch fierce 7024w by unlock code
How to unlock alcatel one touch fierce 7024w by unlock codeHow to unlock alcatel one touch fierce 7024w by unlock code
How to unlock alcatel one touch fierce 7024w by unlock code
 
Some real ghost picture
Some real ghost pictureSome real ghost picture
Some real ghost picture
 
Pqrc 2.4-a4-latest
Pqrc 2.4-a4-latestPqrc 2.4-a4-latest
Pqrc 2.4-a4-latest
 

Similar a Hadoop+spark實作

探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Marc Huang
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版redhat9
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结Yiwei Ma
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用勇浩 赖
 
Linux基础
Linux基础Linux基础
Linux基础zhuqling
 
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發Wei-Tsung Su
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤n-lauren
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86dbabc
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作FEG
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2YI-CHING WU
 
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)acqua young
 

Similar a Hadoop+spark實作 (20)

探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
Banquet 09
Banquet 09Banquet 09
Banquet 09
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
Linux基础
Linux基础Linux基础
Linux基础
 
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86
 
LinuxGuide4F2E
LinuxGuide4F2ELinuxGuide4F2E
LinuxGuide4F2E
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2
 
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
 

Más de FEG

Sequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdfSequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdfFEG
 
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdfFEG
 
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdfFEG
 
Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318FEG
 
2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practices2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practicesFEG
 
2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratchFEG
 
2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratchFEG
 
2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratchFEG
 
2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_RulesFEG
 
202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)FEG
 
202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis VisualizationFEG
 
Transfer Learning (20230516)
Transfer Learning (20230516)Transfer Learning (20230516)
Transfer Learning (20230516)FEG
 
Image Classification (20230411)
Image Classification (20230411)Image Classification (20230411)
Image Classification (20230411)FEG
 
Google CoLab (20230321)
Google CoLab (20230321)Google CoLab (20230321)
Google CoLab (20230321)FEG
 
Supervised Learning
Supervised LearningSupervised Learning
Supervised LearningFEG
 
UnSupervised Learning Clustering
UnSupervised Learning ClusteringUnSupervised Learning Clustering
UnSupervised Learning ClusteringFEG
 
Data Visualization in Excel
Data Visualization in ExcelData Visualization in Excel
Data Visualization in ExcelFEG
 
6_Association_rule_碩士班第六次.pdf
6_Association_rule_碩士班第六次.pdf6_Association_rule_碩士班第六次.pdf
6_Association_rule_碩士班第六次.pdfFEG
 
5_Neural_network_碩士班第五次.pdf
5_Neural_network_碩士班第五次.pdf5_Neural_network_碩士班第五次.pdf
5_Neural_network_碩士班第五次.pdfFEG
 
4_Regression_analysis.pdf
4_Regression_analysis.pdf4_Regression_analysis.pdf
4_Regression_analysis.pdfFEG
 

Más de FEG (20)

Sequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdfSequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdf
 
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
 
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
 
Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318
 
2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practices2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practices
 
2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch
 
2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch
 
2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch
 
2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules
 
202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)
 
202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization
 
Transfer Learning (20230516)
Transfer Learning (20230516)Transfer Learning (20230516)
Transfer Learning (20230516)
 
Image Classification (20230411)
Image Classification (20230411)Image Classification (20230411)
Image Classification (20230411)
 
Google CoLab (20230321)
Google CoLab (20230321)Google CoLab (20230321)
Google CoLab (20230321)
 
Supervised Learning
Supervised LearningSupervised Learning
Supervised Learning
 
UnSupervised Learning Clustering
UnSupervised Learning ClusteringUnSupervised Learning Clustering
UnSupervised Learning Clustering
 
Data Visualization in Excel
Data Visualization in ExcelData Visualization in Excel
Data Visualization in Excel
 
6_Association_rule_碩士班第六次.pdf
6_Association_rule_碩士班第六次.pdf6_Association_rule_碩士班第六次.pdf
6_Association_rule_碩士班第六次.pdf
 
5_Neural_network_碩士班第五次.pdf
5_Neural_network_碩士班第五次.pdf5_Neural_network_碩士班第五次.pdf
5_Neural_network_碩士班第五次.pdf
 
4_Regression_analysis.pdf
4_Regression_analysis.pdf4_Regression_analysis.pdf
4_Regression_analysis.pdf
 

Último

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书jakepaige317
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 

Último (6)

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 

Hadoop+spark實作

  • 1.
  • 2. • Education – NCU (MIS) – NCCU (CS) • Experience Big data & DW – Raritan, TWM, FET • Teaching – III, tcfst, ntunhs • Community – TW Spark User Group – TW Hadoop User Group • Research – IoT – A.I. robot – Machine learning • Skills – PG, TPM, DM, ML, Big data architecture and IOT
  • 3.
  • 4. 名稱 Arduino Uno Arduino Yun RS 3 價格 $25 $69 $35 處理器 ATmega328p ATmega32u4 博通 BCM2387 (4c) 顯示晶片 NA NA VideoCore IV (2c) 記憶體 32KB 64 MB 1GB 儲存單元 SRAM: 2KB EEPROM: 1KB SRAM: 2.5KB EEPORM: 1KB NA (外接記憶卡) 有線網路 NA NA 10/100 乙太網路 無線網路 NA • IEEE 802.11b/g/n (Atheros AR9331) • Flash: 32MB • IEEE802.11 • 藍芽4.1 應用 感知端 感知端、控制端 感知端、控制端 其他 USB*4 4c: 4 cores
  • 8.
  • 10.
  • 11. • NTP • chkconfig ntpd on • services ntpd start • Edit host • vi /etc/hosts • Install jdk • rpm -ivh /tmp/jdk-7u79-linux-x64.rpm • ln -s /usr/java/jdk1.7.0_79 /usr/java/java • Edit jdk profile • vi /etc/profile export JAVA_HOME=/usr/java/java export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin
  • 12. • Security • setenforce 0 • vi /etc/selinux/config • service iptables stop • chkconfig iptables off • Ssh Config • vi /etc/ssh/ssh_config • Keygen at master • ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys • ssh localhost SELINUX=disabled StrictHostKeyChecking no
  • 13. • Hadoop 安裝 (hadoop-2.6.4) • tar -zxvf /tmp/hadoop-2.6.4.tar.gz -C /tmp • mv /tmp/hadoop-2.6.4 /opt • ln -s /opt/hadoop-2.6.4 /opt/hadoop • vi /etc/profile • source /etc/profile export HADOOP_HOME=/opt/hadoop/ export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
  • 14. • Hadoop 設定 • vi /opt/hadoop/libexec/hadoop-config.sh • vi /opt/hadoop/etc/hadoop/hadoop-env.sh • 建立 tmp 目錄 • mkdir -p $HADOOP_HOME/tmp export JAVA_HOME=/usr/java/java export JAVA_HOME=/usr/java/java export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
  • 15. • DN 設定 • vi /opt/hadoop/etc/hadoop/slaves • Hadoop 參數設定 • vi /opt/hadoop/etc/hadoop/core-site.xml slaver1 slaver2 <?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> </configuration>
  • 16. • vi /opt/hadoop/etc/hadoop/hdfs-site.xml • vi /opt/hadoop/etc/hadoop/mapred-site.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration> <?xml version="1.0"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
  • 17. • vi /opt/hadoop/etc/hadoop/yarn-site.xml <?xml version="1.0"?> <configuration> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>${hadoop.tmp.dir}/nodemanager/local</value> </property> <property> <name>yarn.nodemanager.address</name> <value>0.0.0.0:8034</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>${hadoop.tmp.dir}/nodemanager/remote</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>${hadoop.tmp.dir}/nodemanager/logs</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
  • 18. • 複製 public key • ssh-copy-id -i ~/.ssh/id_rsa.pub root@slaver1 • ssh-copy-id -i ~/.ssh/id_rsa.pub root@slaver2 • 複製 hadoop • scp -rp /opt/hadoop-2.6.4/ root@slaver2:/opt • scp -rp /opt/hadoop-2.6.4/ root@slaver2:/opt • 確定軟連結 • ln -s /opt/hadoop-2.6.4 /opt/hadoop • 複製 profile • scp /etc/profile root@slaver1:/etc/profile • scp /etc/profile root@slaver2:/etc/profile • 格式化 namenode • hadoop namenode -format
  • 19. • 啟動 hadoop • start-all.sh • 檢查服務 • jps • 關閉 hadoop 服務,因為我們要進行 spark 安裝 • stop-all.sh master slaver
  • 20. • 安裝 spark (spark-1.6.1-bin-hadoop2.6) • 設定 • 複製 spark Spark Standalone 模式
  • 21. • Worker 設定 • 複製 • 設定環境變數 • 啟動
  • 22. • 啟動過程 • 檢查 • jps master worker
  • 23.
  • 24. • Spark streaming 來的資料,要定期寫入 Mysql • 開啟 Eclipse,並匯入 ConnectPool 專案 • 調整內部 ip 資訊後,重新編譯產生 jar 檔
  • 25. • Simple Build Tool 常用來編譯 Scala 程式 • 下載 sbt • https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt- launch/0.13.11/sbt- launch.jar?_ga=1.166007678.1150428719.1462532280 • 新增資料夾並放入此目錄 • mkdir -p /usr/local/sbt • 新增並編輯 sbt 檔案於此目錄 • vi sbt • chmod u+x sbt • 檢查版本並初始化 (sbt 會下載一些必須函示庫,因此需要一點時間) • ./sbt -version http://www.scala-sbt.org/ #!/bin/bash SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
  • 26. • 直接將 sparkapp 目錄放到家目錄當中 • 請注意,使用 sbt 編譯必須按照此目錄結構的方式 • 準備編譯檔 • vi simple.sbt • 開始編譯 • cd ~/sparkapp • /usr/local/sbt/sbt package name := "Simple Project" version := "1.0" scalaVersion := "2.10.5" libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" 示意圖
  • 27. • 取出結果 jar 檔 • 複製此 jar 檔到 spark 執行目錄 • cp ./target/scala-2.10/writedatatomysql_2.10-1.0.jar /usr/lib/spark/bin
  • 28. • Spark Streaming 程式 (writedatatomysql_2.10-1.0.jar) • 寫入 Mysql 程式 (ConnectPool.jar) • 進入 spark 程式執行區 • cd /usr/lib/spark/bin • 執行 • ./spark-submit --class com.dt.spark.streaming.WriteDataToMySQL --jars /root/sparkapp2/lib/ConnectPool.jar ./writedatatomysql_2.10- 1.0.jar • 確定沒問題後,先關掉此程式,等前後端 Arduino 完成後才打開
  • 31. http://www.rfwireless-world.com/Terminology/MQTT-protocol.html 1. 是輕量級Message Queue 2. 開放、簡單、輕量、易於實現 3. 適合一對多訊息發布 4. 使用 TCP/IP 5. 小型傳輸,header 固定 2 bytes
  • 32. • 適合大量且連續(輕量級)資料傳輸 • IPV4 package 相關 mqtt 學習請參考 http://www.hivemq.com/blog/mqtt-essentials/
  • 33. http://cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pimqtt-android.html QoS Level Message Delivery Delivery Semantics Delivery Guarantees 0 <= 1 最多一次 1. 會發生訊息遺失或重複,但不會因此而產生 副作用,因為很快下一個訊息陸續接著發送出來 2. 適合 IoT 感知器 1 >= 1 最少一次 保證訊息會到達,但訊息可能會重複發生 2 == 1 只有一次 確定訊息只到達一次 Qos 依照 Client 端而決定,例如: Client 端以 Qos 0 接收,因此都將以 Qos 0 為主
  • 34. • 新增 mosquitto安裝來源 (建議裝在 slaver1) • vi /etc/yum.repos.d • yum install mosquitto mosquitto-clients libmosquitto-devel libmosquittopp-devel python-mosquitto • ps -aux | grep mosquitto • 啟動 • mosquitto -c /etc/mosquitto/mosquitto.conf • 新增編輯 • vi /etc/mosquitto/mosquitto.conf [home_oojah_mqtt] name=mqtt (CentOS_CentOS-6) type=rpm-md baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6/ gpgcheck=1 gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6//repodata/repomd.xml.key enabled=1 listener 1883 protocol mqtt
  • 35. 請在 linux 端開啟 ulimit -n20000 -s512
  • 36. • Bridge 功能 (不用自己實作 keepalive 功能) • $SYS/broker/connection/<clientid>/state • 參考: http://mosquitto.org/man/mosquitto-8.html • Message queue 是以 topic 進行區分,每個 client 均可訂閱 topic 獲取資料, 想法是以廣播方式,廣播給所有訂閱的 client • 相關的 message queue 有: mqtt、xmpp、gcm 等等傳輸方式 • 以 mqtt 實作的產品有 Apache Apollo、HiveMQ、Mosca、Mosquitto、 RabbitMQ (請注意 kafka 目前並無支援)
  • 37. • Paho 是一個免費的開放軟體 • 透過 Paho 方便與 mqtt 服務溝通 • 安裝 • pip search mqtt • pip install paho-mqtt • touch /root/iot.log (在 master) • Paho 自此專案扮演的腳色 • 由 Paho 讀取 Mosquitto 上的資料,以 append 方式寫入檔案 • 透過 tail -F 方式將檔案灌入 spark streaming (在 master 執行) • 測試程式碼 • 參考 paho1.py http://www.eclipse.org/paho/ ssh root@192.168.100.163 tail -F /root/iot.log | nc 192.168.100.170 9999 -lk 亦可透過 flume 直接寫入 spark streaming 若要用網頁版,可參考 mqttws31-min.js
  • 38. • 安裝 Mysql (5.1.38) (建議安裝於 slaver2) • yum -y install mysql mysql-server • chkconfig mysqld on • 啟動 mysql • service mysqld start • 建立 root 登入密碼 • mysqladmin -u root password '1234' • 建立資料庫與table • create database spark; • use spark; • create table create table searchKeyWord(insert_time date, keyword varchar(30), search_count int(11)); 依照需求可改變持久層設計,重新改寫 ConnectPool.jar 即可
  • 39. • 用來控制燈泡亮燈 (此做法是 gateway 作法) • 請執行 • python iot_control_all_system.py iot_control_all_system.py read web control 也可以透過 anduino (mqtt subscriber) 決定亮燈
  • 40. • 準備 Arduino 與溫溼度感知器 (DHT11 ) • 準備 ethernet shield • 開啟 Arduino IDE 並燒入程式 • 參考 mqttproducer.ino 亦可使用 ESP8266 (無線傳輸) 取代 ethernet IDE 函式庫 Arduino 1.6.9 dht PubSubClient
  • 41. • 準備 Arduino、relay、燈泡 • 準備 ethernet shield • 開啟 Arduino IDE 並燒入程式 • 參考 LAMPBALL.ino IDE 函式庫 Arduino 1.0.3 WebServer Streaming 請注意! 此 IDE 版本需為 1.0.3
  • 42.