前言
最近在學習Spark,除了原生的Scala以外,Spark還提供了一個pyspark支持Python。以前曾經搭過一個基于IPython notebook的在線代碼運行平臺,其中用到的numpy,scipy,matplotlib,pandas等文本/數據處理庫讓我覺得如果能和pyspark結合說不定是個不錯的組合——可以直觀的測試代碼邏輯,比起shell不知道要高到哪里去了。
至于這個平臺,你可以搭載在樹莓派,阿里云ecs,甚至是本機架設,方便快捷簡單易上手。
事實上對于這篇文章,你也可以單純把它看作是單機布置偽分布式Spark的教程,因為前面步驟一樣一樣的。
前期準備
硬件:
Linux/Mac計算機 x1
Linux用Ubuntu作為示例,Mac默認有HomeBrew或者Macport
軟件:
Java環境,配置過JAVA_HOME
Python環境,默認為Python2
需聯網,沒有網絡的請自行下載源碼包并上傳至機器
下載
Spark:
前往Apache官網下載:
- hadoop2.6.0.tar.gz
- spark-1.6.1-bin-hadoop2.6.tar.gz
- scala-2.10.6.tar.gz
下載并統一使用
tar xvzf XXX.tar.gz
進行解壓,之后執行
$mv hadoop2.6.0 /usr/local/hadoop
$mv spark-1.6.1-bin-hadoop2.6 /usr/local/spark
$mv scala-2.10.6 /usr/lcoal/scala
將文件夾移動到/usr/local備用
IPython:
之前用的Ipython notebook已經獨立出來變成了jupyter,在這個步驟Python首先要安裝setuptools,之后執行
$easy_install pip virtualenv
Virtualenv是Python的一個沙盒環境,適合配置不同版本的庫來適配不同應用。
之后用Virtualenv創建一個IPython ENV
$cd /your/IPython/path/
$virtualenv ipython
$source ipython/bin/activate
(ipython)$
當前綴出現(ipython)的時候,說明這個env已經創建成功并正在使用中,如果需要退出就執行
(ipython)$cd ipython/bin && deactivate
$
之后在ipython環境中執行
(ipython)$pip install ipython jupyter numpy scipy pandas snownlp
安裝matplotlib庫則稍微麻煩些,需要先安裝其依賴的包libpng和freetype
安裝libpng:
$apt-get install libpng-dev
安裝freetype:
$cd ~/Downloads
$wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.10.tar.gz
$tar zxvf freetype-2.4.10.tar.gz
$cd freetype-2.4.10/
$./congfigure
$make
$make install
之后執行
pip install matplotlib
配置環境變量
在這一步,Ubuntu請執行
$vim ~/.bashrc
Mac執行
$vim ~/.bash_profile
在文件末尾輸入:
export PATH="$PATH:/usr/local/share/scala/bin"
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python/lib/py4j-0.9-src.zip
IPYTHON_OPTS="notebook"$SPARK_HOME/bin/pyspark
:wq保存退出之后可以開始進行最后一步的spark環境配置了
Spark配置:
說是Spark的配置其實是更像是Hadoop的配置,畢竟Spark默認配置就能運行。
首先進入Hadoop的配置文件夾
$cd /usr/local/hadoop/etc/hadoop
$ls
你可以看到以下幾個文件
- core-site.xml
- yarn-site.xml
- mapred-site.xml
- hdfs-site.xml
別急一個一個來
vim core-site.xml
寫入
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
vim yarn-site.xml
寫入
<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>
如果沒有mapred-site.xml
$ mv mapred-site.xml.template mapred-site.xml && vim mapred-site.xml
寫入
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vim hdfs-site.xml
寫入
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
呼,長噓一口氣
然后格式化一下namenode
$hdfs namenode -format
啟動hadoop服務
$start-all.sh
輸入數次密碼,如果不想每次都輸密碼就百度一下hadoop的ssh免密配置
$jps
看到如下
17785 SecondaryNameNode
17436 NameNode
17591 DataNode
18096 NodeManager
17952 ResourceManager
23635 Jps
很好你成功啟動了hadoop,接下來進入spark文件夾
$cd $SPARK_HOME/sbin
$start-all.sh
輸入一次密碼之后查看jps是否多了一個worker和一個master,不出意外的話你的spark應該是能運行了
啟動Jupyter
好累啊終于到了這一步了,進入ipython環境的前提下執行
(ipython)$jupyter notebook --generate-config
(ipython)$vim ~/.jupyter/jupyterA_notebook_config.py
寫入
c.NotebookApp.ip='*'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888
然后執行
jupyter notebook
在瀏覽器輸入http://ip_address:8888就能訪問辣!
然后就愉快的新建notebook開始敲代碼叭!
oh yeah