最近需要開始分析一些 Log ,最直覺的方式就是使用最熟悉的 Spark 來分析,於是開始研究最近有什麼方便在 Azure 啟動 Spark 的方式,在 AWS 和 GCP 上,之前就已經有研究過專門支援的 PaaS 服務:
- AWS 就是 EMR ( 關於AWS Elaster MapReducer )
- GCP 就是 Dataproc - Google Cloud Dataproc 如何建立 Custom Image 加快 PySpark 部署環境速度
Datasetjoin1 = impression.join(broadcast(view), col, LeftOuter.toString()) .na() .fill(0, new String[] {"viewCount"});
先求有,再求好,等到程式會動了,確定結果是大家想要的,有符合商業價值了,再來調教也不遲!
孬孬免責聲明:此篇測試不是在很嚴謹的環境,也沒有Fine tune的狀況下做出簡單的測試比較,純粹提供參考,有興趣的人建議還是自行測試~:P
Dataset
|
Record
pre day
|
100
|
1,000
|
10,000
|
50,000
|
100,000
|
Days
|
365
|
365
|
365
|
365
|
365
|
|
Data Size
|
9.2Mb
|
95Mb
|
926Mb
|
4.6G
|
9.2G
|
|
Hive
|
Sec
|
73.298
|
143
|
700
|
1184
|
Dead!
|
Shark
|
Sec
|
37
|
108
|
216
|
2747
|
Dead!
|
# wget http://www.scala-lang.org/files/archive/scala-2.9.3.tgz # tar xvf scala-2.9.3.tgz # sudo mv scala-2.9.3 /usr/lib # sudo ln -s /usr/lib/scala-2.9.3 /usr/lib/scala
export SCALA_HOME=/usr/lib/scala export PATH=$PATH:$SCALA_HOME/bin
# wget http://spark-project.org/download/spark-0.7.3-prebuilt-cdh4.tgz # tar zxvf spark-0.7.3-prebuilt-cdh4.tgz # mv spark-0.7.3 /usr/lib/ # ln -s /usr/lib/spark-0.7.3 /usr/lib/spark
export SPARK_HOME=/usr/lib/scala export PATH=$PATH:$SPARK_HOME/bin
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -b 4096 -C “iamcomment” # ssh-copy-id -i .ssh/id_rsa.pub root@lab-hadoop-m2 # ssh-copy-id -i .ssh/id_rsa.pub root@lab-hadoop-m3
localhost lab-hadoop-m1 lab-hadoop-m2
#!/usr/bin/env bash # This file contains environment variables required to run Spark. Copy it as # spark-env.sh and edit that to configure Spark for your site. At a minimum, # the following two variables should be set: # - SCALA_HOME, to point to your Scala installation, or SCALA_LIBRARY_PATH to # point to the directory for Scala library JARs (if you install Scala as a # Debian or RPM package, these are in a separate path, often /usr/share/java) # - MESOS_NATIVE_LIBRARY, to point to your libmesos.so if you use Mesos # # If using the standalone deploy mode, you can also set variables for it: # - SPARK_MASTER_IP, to bind the master to a different IP address # - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports # - SPARK_WORKER_CORES, to set the number of cores to use on this machine # - SPARK_WORKER_MEMORY, to set how much memory to use (e.g. 1000m, 2g) # - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT # - SPARK_WORKER_INSTANCES, to set the number of worker instances/processes # to be spawned on every slave machine SPARK_MASTER_WEBUI_PORT=8082 SPARK_WORKER_MEMORY=1g
starting spark.deploy.master.Master, logging to /usr/lib/spark-0.7.3/bin/../logs/spark-root-spark.deploy.master.Master-1-lab-hadoop-m1.out Master IP: lab-hadoop-m1 cd /usr/lib/spark-0.7.3/bin/.. ; /usr/lib/spark/bin/start-slave.sh 1 spark://lab-hadoop-m1:7077 localhost: starting spark.deploy.worker.Worker, logging to /usr/lib/spark-0.7.3/bin/../logs/spark-root-spark.deploy.worker.Worker-1-lab-hadoop-m1.out lab-hadoop-m3: starting spark.deploy.worker.Worker, logging to /usr/lib/spark-0.7.3/bin/../logs/spark-root-spark.deploy.worker.Worker-1-lab-hadoop-m3.out lab-hadoop-m2: starting spark.deploy.worker.Worker, logging to /usr/lib/spark-0.7.3/bin/../logs/spark-root-spark.deploy.worker.Worker-1-lab-hadoop-m2.out
./run spark.examples.SparkLR local[2]
Final w: (5816.075967498865, 5222.008066011391, 5754.751978607454, 3853.1772062206846, 5593.565827145932, 5282.387874201054, 3662.9216051953435, 4890.78210340607, 4223.371512250292, 5767.368579668863)