在阿里云上搭建 Spark 实验平台

摘要:
在三台服务器上执行:cdroot/。ssh,catid_rsa.pub˃˃授权密钥,设置id_rsa。Pub附加到authorized_密钥验证SSH无密码通信sshmastershsave1shslave25。安装JDK并从JDK官方网站gz下载JDK-8u77-linux-x64.tar在Windows 7下使用Xftp将JDK文件传输到三台ECS服务器上的/usr/local/java,然后解压缩。参考:1http://www.mak-blog.com/spark-on-yarn-setup-multinode.html2张丹阳,曹伟卓,薛志云,等.阿里云实现Spark的分布式计算[J]。福建计算机,2015:23-24

之前在自己的笔记本上运行 Python 代码,有些要运行一天多,一关机就前功尽弃,很不方便,所以才有租用阿里云服务器的想法,用了同学租的一台用了两天又觉得不够使,索性就自己租了三台,配置如下,三台一共约 320 块。

CPU:1核

内存:2048 MB

操作系统:Ubuntu 14.04 64位

带宽计费方式:按固定带宽

当前使用带宽:1Mbps

实例规格:ecs.s1.small

实例规格族:标准型 s1

我们使用开源免费软件 PuTTY 连接到三台服务器上进行 Spark 的配置。

1、修改主机名

用 vi 打开 etc/hostname,三台服务器的主机名依次修改为 master、slave1 和 slave2。

# vi /etc/hostname

2、配置 hosts 文档

# vi /etc/hosts

在 hosts 文件中添加三台服务器的 IP 地址和对应的主机名。

120.56.121.132 master
120.35.219.36 slave1
120.45.201.137 slave2

配置之后 ping 一下用户名看是否生效

# pingmaster
# pingslave1
# ping slave2

3、关闭防火墙

# sudo ufw disable

4、配置 SSH 无密码通信

# sudo apt-get install openssh-server
# sudo apt-get update
# ssh-keygen -t rsa -P ""   //提示选择目录时,按 Enter 键,那么 id_rsa 和 id_rsa.pub 会生成到 root/.ssh 目录下。在根目录下使用 ls -a 命令可以看到该目录。

在三台服务器上执行:cd root/.ssh,cat id_rsa.pub>>authorized_keys,将 id_rsa.pub 追加到 authorized_keys。

将 slave1 和 slave2 的 id_rsa.pub 拷贝到 master(传输文件可用 scp),并将其内容追加到 master 的 root/.ssh/authorized_keys 中。同理,将 slave1 和 master 的 id_rsa.pub 追加到 slave2 的authorized_keys,将 slave2 和 master 的 id_rsa.pub 追加到 slave1 的authorized_keys。

在阿里云上搭建 Spark 实验平台第1张

验证SSH无密码通信

ssh master
ssh slave1
ssh slave2

5、安装 JDK

在 JDK 官网下载jdk-8u77-linux-x64.tar.gz。在 windows 7 下使用 Xftp 把该 JDK 文件传到三台云服务器的 /usr/local/java 下,解压。

# cd /usr/local/java
# sudo tar xzvf jdk-8u77-linux-x64.tar.gz

然后,编辑 ~/.bashrc 文件,在文件最后添加:

export JAVA_HOME=/usr/local/java/jdk1.8.0_77
export JRE_HOME=/usr/local/java/jdk1.8.0_77/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
export JDK_HOME=/usr/local/java/jdk1.8.0_77

为了使修改生效,执行:

# source ~/.bashrc

检验 JDK 是否安装成功

# java -version

6、安装 Scala

下载scala-2.11.8.tgz,解压到 /usr/local 文件夹,并将文件夹改名为 scala。

# tar xvzf scala-2.11.8.tgz
# ln -s scala-2.11.8 scala

打开 ~/.bashrc,添加

export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin

7、安装 Spark

下载spark-1.6.1-bin-hadoop2.6.tgz,解压到/usr/local 文件夹,并将文件夹改名为 spark。

# tar xvzf spark-1.6.1-bin-hadoop2.6.tgz
# ln -s spark-1.6.1-bin-hadoop2.6 spark

修改配置文件 /usr/local/spark/conf 中:

# mv spark-env.template spark-env.sh# mvlog4j.properties.template log4j.properties
# mv slaves.template slaves

在 spark-env.sh 结尾添加

export SCALA_HOME=/usr/local/scala

修改 slaves 文件

master
slave1
slave2

打开 ~/.bashrc,添加

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

在阿里云上搭建 Spark 实验平台第2张

为了使 .bashrc 修改生效,执行:

# source ~/.bashrc

8、启动 Spark 集群

# start-all.sh  //因为上面的 .bashrc 文件中配置了 usr/local/spark/sbin 路径,所以这里可直接执行

在阿里云上搭建 Spark 实验平台第3张

输入 # jps 命令看 master 下是否出现 master 和 worker,在 slave 节点下是否出现 worker,出现则说明 Spark 集群启动成功。

在阿里云上搭建 Spark 实验平台第4张

在阿里云上搭建 Spark 实验平台第5张

在阿里云上搭建 Spark 实验平台第6张

9、运行 Spark 实例

# run-example SparkPi 10

然后出来一大串的运行信息,其中有运行结果。

在阿里云上搭建 Spark 实验平台第7张

10、调整日志级别

为了减少信息干扰,可以调整日志级别,修改 spark/conf/log4j.properties,把 log4j.rootCategory=INFO,console 改为 log4j.rootCategory=WARN,console

在阿里云上搭建 Spark 实验平台第8张

然后再运行

# run-example SparkPi 10

在阿里云上搭建 Spark 实验平台第9张

可以看到结果清爽多了。

但对于初学者来说,INFO 也是很有参考价值的,所以,建议把日志级别调整为 INFO。

完毕。

参考资料:

1、http://www.mak-blog.com/spark-on-yarn-setup-multinode.html

2、张丹阳, 曹维焯, 薛志云,等. 阿里云实现Spark的分布式计算[J]. 福建电脑, 2015(2):23-24.

免责声明:文章转载自《在阿里云上搭建 Spark 实验平台》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用浏览器控制台抓取shodan、搜索引擎、zone-h的结果django的几种方法进行序列化(视图)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Scalaz(4)- typeclass:标准类型-Equal,Order,Show,Enum

  Scalaz是由一堆的typeclass组成。每一个typeclass具备自己特殊的功能。用户可以通过随意多态(ad-hoc polymorphism)把这些功能施用在自己定义的类型上。scala这个编程语言借鉴了纯函数编程语言Haskell的许多概念。typeclass这个名字就是从Haskell里引用过来的。只不过在Haskell里用的名称是typ...

监控Spark应用方法简介

监控Spark应用有很多种方法。Web接口每一个SparkContext启动一个web UI用来展示应用相关的一些非常有用的信息,默认在4040端口。这些信息包括:任务和调度状态的列表RDD大小和内存使用的统计信息正在运行的executor的信息环境信息你可以在浏览器中打开http://<driver-node>:4040网址来访问这些信息。如...

Spark官方调优文档翻译(转载)

Spark调优由于大部分Spark计算都是在内存中完成的,所以Spark程序的瓶颈可能由集群中任意一种资源导致,如:CPU、网络带宽、或者内存等。最常见的情况是,数据能装进内存,而瓶颈是网络带宽;当然,有时候我们也需要做一些优化调整来减少内存占用,例如将RDD以序列化格式保存(storing RDDs in serialized form)。本文将主要涵盖...

pyspark 针对mongodb的读写

1.创建pyspark与mongodb的连接,首先加载依赖包,其有三种方式: 1)直接将其放在在安装spark的jars目录下; 2)在spark_submit中,添加依赖包信息; 3)在创建spark的对象的时候添加依赖信息,具体案例如下图所示 spark = SparkSession .builder .appName('mongo c...

spark-调节executor堆外内存

什么时候需要调节Executor的堆外内存大小? 当出现一下异常时: shuffle file cannot find,executor lost、task lost,out of memory 出现这种问题的现象大致有这么两种情况: Executor挂掉了,对应的Executor上面的block manager也挂掉了,找不到对应的shuffle ma...

Spark 源码编译

写在前面 生产上的spark一般来说都是需要我们自己手动编译的,编译适合自己公司生产环境上的spark版本。参照官网http://spark.apache.org/docs/latest/building-spark.html 前置:使用Maven构建Spark需要Maven 3.5.4和Java 8. Spark 源码编译 首先调大CacheSi...