在RaspberryPi上运行ApacheSpark
首先。
“先决条件”
我正在使用Raspberry Pi 3。
请确保Raspberry Pi已连接到互联网。(使用静态IP)
我正在使用Raspbian作为Raspberry Pi 3的操作系统。
请参阅关于如何在Raspberry Pi 3上进行无线局域网设置的文章,从安装Raspbian操作系统到无线局域网设置。
集群构成
我准备了四台树莓派,其中一台作为主机,其余三台作为从机。
将Spark安装到Raspberry Pi上
需要在每个RasberryPi上进行此设置。
RasberryPi用户一直在使用标准的pi帐户。如果您想要使用其他用户,请先在每个RasberryPi上创建用户,然后切换并进行操作。
安装Java8到Raspberry Pi。
如果已经安装了Java,请忽略这一步骤。
$ apt-cache search oracle jdk
$ sudo apt-get update
$ sudo apt-get install oracle-java8-jdk
主机名的设置在/etc/hostname目录下。
请设置各个Raspberry Pi的主机名,以便通过主机名而不是IP地址进行管理。请为每个Raspberry Pi指定一个容易理解的名称。
$ sudo vi /etc/hostname
/etc/hosts的配置
为了方便与每个Raspberry Pi进行通信,进行以下设置。
请在/etc/hostname配置文件中列出为每台Raspberry Pi设置的主机名和其对应的IP地址。
$ sudo vi /etc/hosts
我只需要一个选项,所以我将以本地中文进行释义。
作为例子,我将其提供以供参考。
##### ↓のlocalhostやipv6はコメントアウトしています。
#127.0.0.1 localhost
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
#127.0.1.1 raspberrypi
##### ↓が各RasberryPiのホスト名(今回追記分)
192.168.11.10 green01
192.168.11.11 blue01
192.168.11.12 pink01
192.168.11.13 clear01
重启Raspberry Pi
$ sudo reboot
为了在从主服务器(master) SSH登录到从服务器(slave)时不需要密码,请配置密钥。
这个任务只需使用主机上的Rasberry Pi 即可完成。
$ ssh-keygen
$ ssh-copy-id pi@green01
$ ssh-copy-id pi@blue01
$ ssh-copy-id pi@pink01
$ ssh-copy-id pi@clear01
下载Spark
正在下载截至2016年11月28日最新的版本2.0.2。
$ wget http://d3kbcqa49mib13.cloudfront.net/spark-2.0.2-bin-hadoop2.7.tgz
$ tar xzvf spark-2.0.2-bin-hadoop2.7.tgz
Spark配置
需要修正的文件有以下两个。
-
- conf/slaves
- conf/spark-env.sh
只需要在conf/slaves中设置master,但是对于conf/spark-env.sh文件,也需要在slave上配置相同的文件。例如,将hostname为green01的RaspberryPi设为master。
paraphrase the following natively in Chinese, only need one option :
conf/slaves的设置
$ cd spark-2.0.2-bin-hadoop2.7/
$ cp conf/slaves.template conf/slaves
$ vi conf/slaves
请将slave的主机名添加到conf/slaves的末尾。
例如,只是作为参考,附在下面。
blue01
pink01
clear01
conf/spark-env.sh的配置
$ cd spark-2.0.2-bin-hadoop2.7/
$ cp conf/spark-env.sh.template conf/spark-env.sh
$ vi conf/spark-env.sh
请在conf/spark-env.sh文件的末尾添加。
以下是一个参考示例。
您可以自由设置参数值。
SPARK_MASTER_IP=green01
SPARK_EXECUTOR_MEMORY=512m
SPARK_DRIVER_MEMORY=512m
SPARK_EXECUTOR_INSTANCES=3
※ 这个conf/spark-env.sh文件需要放置在slave的相同路径下。
运行Spark
终于来到这里了。
请在这里的工作中使用主要技能。
启动Spark集群
$ cd spark-2.0.2-bin-hadoop2.7/
$ ./sbin/start-all.sh
请启动并访问Web以进行确认。
“http://(master的IP地址):8080”
如果一切顺利,我认为“Workers”会列出从属服务器。
如果没有,请重新检查设置。
运行Spark
请将以下命令中的「–master spark://(master的IP地址):7077」替换为各自的值。
$ bin/spark-submit --class org.apache.spark.examples.GroupByTest --master spark://(masterのIPアドレス):7077 examples/jars/spark-examples_2.11-2.0.2.jar 30
停止SparkCluster。
$ cd spark-2.0.2-bin-hadoop2.7/
$ ./sbin/stop-all.sh
请参考
我想要用两台树莓派2试验Apache Spark的并行分布处理。
最后
太久了…
终于成功将RaspberryPi转变成工人了。
接下来想尝试安装Cassandra。