计划2个月内能精通spark开发,今天起开始努力!
1、环境准备
虚拟机采用visualbox,https://www.virtualbox.org
在上面搭建ubuntu server 集群,下载ubuntu server 光盘镜像,http://www.ubuntu.com/download/server
在visualbox上安装 ubuntu server,从中选择英文语言,如果中文可能会有乱码,按提示基本一路回车。
装好ubuntu server第一件事是安装增强功能,visualbox光驱设置成为VBoxGuestAdditions.iso,进入虚拟机
$ sudo mount /dev/cdrom /media/cdrom $ sudo aptitude install build-essential linux-headers-$(uname -r) -y $ cd /media/cdrom $ sudo ./VBoxLinuxAdditions.run
安装成功的标志是鼠标可以随便拖动。
安装ssh服务器
$ sudo apt-get install openssh-server
visualbox中设置本虚拟机的网络为“桥接网络" ,这样就可以通过ssh客户端链接到虚拟机中。
新装的ubuntu server开始并不好用,为了让下载速度更快一点需要更新ubuntu的软件源
根据官方文档 http://wiki.ubuntu.org.cn/Qref/Source
新建用户名sparker
ubuntu建用户最好用adduser,虽然adduser和useradd是一样的在别的linux糸统下,但是我在ubuntu下用useradd时,并没有创建同名的用户主目录。 例子:adduser user1 这样他就会自动创建用户主目录,创建用户同名的组。 root@ubuntu:~# sudo adduser sparker [sudo] password for xx: 输入xx用户的密码,出现如下信息 正在添加用户"sparker"… 正在添加新组"sparker" (1006)… 正在添加新用户"sparker" (1006) 到组"sparker"… 创建主目录"/home/sparker"… 正在从"/etc/skel"复制文件… 输入新的 UNIX 口令: 重新输入新的 UNIX 口令: 两次输入db的初始密码,出现的信息如下 passwd: password updated successfully Changing the user information for db Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Full Name []:等信息一路回车 这个信息是否正确? [Y/n] y 到此,用户添加成功。如果需要让此用户有root权限,执行命令: root@ubuntu:~# sudo vim /etc/sudoers 修改文件如下: # User privilege specification root ALL=(ALL) ALL sparker ALL=(ALL) ALL 保存退出,sparker用户就拥有了root权限。
1、安装jdk
1.删除自带的 2.安装Oracle官方的 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer 3.管理 sudo update-alternatives --config java
2、下载需要的安装包,我在sparker用户目录下面新建了一个~/bigdata文件夹,用于存放需要的安装包;
wget http://apache.osuosl.org/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz wget https://dl.bintray.com/sbt/native-packages/sbt/0.13.9/sbt-0.13.9.tgz wget http://apache.claz.org/hadoop/common/hadoop-2.6.3/hadoop-2.6.3.tar.gz wget http://apache.mirrors.tds.net/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz wget http://mirror.reverse.net/pub/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
2、对所有安装包进行解压,重命名
比如: tar -zxf hadoop-2.6.3.tar.gz mv hadoop-2.6.3 hadoop依次对所有的包进行解压,解压完的目录结构如下:
3、环境变量设置
$ vim ~/.bashrc export JAVA_HOME=/usr/lib/jvm/java-8-oracle export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export SBT_HOME=$HOME/bigdata/sbt export MAVEN_HOME=$HOME/bigdata/maven export SPARK_HOME=$HOME/bigdata/spark/ export HADOOP_HOME=$HOME/bigdata/hadoop/ export HADOOP_CONF_DIR=$HOME/bigdata/hadoop/etc/hadoop export SCALA_HOME=$HOME/bigdata/scala/ export PATH=$PATH:$MAVEN_HOME/bin:$SBT_HOME/bin:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin: $source .bashrc
验证一下
$sbt sbt-version [info] Set current project to sparker (in build file:/home/sparker/) [info] 0.13.9 $mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /home/sparker/bigdata/maven Java version: 1.8.0_66, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-oracle/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.19.0-25-generic", arch: "amd64", family: "unix" $ java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
4、关闭当前虚拟机,复制虚拟机2台,组成一个3台的集群。
进入每台机器,
修改 /etc/hostname 定义机器名列表为:
master slave1 slave2修改 /etc/hosts 如下,IP为实际的机器IP
192.168.3.10 master 192.168.3.11 slave1 192.168.3.12 slave2
5、打通各个服务器的ssh免密码登陆
1:生成密钥 ssh-keygen -t rsa 2:把本机的公钥追到slave1,slave2的 .ssh/authorized_keys 里 ssh-copy-id -i ~/.ssh/id_rsa.pub jifeng@feng02 3:测试 ssh slave1
6、zookeeper配置
1、在master 机器的zookeeper home目录下 mkdir data mkdir logs cd conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg #在最后面增加如下代码: dataDir=/home/sparker/bigdata/zookeeper/data dataLogDir=/home/sparker/bigdata/zookeeper/logs server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888 3、设置serverid cd data echo "1">myid #在data目录下生成myid文件,内容为1 4、copy zookeeper 到另两个节点 cd /usr/local scp -r ./zookeeper root@slave1:/usr/local/ scp -r ./zookeeper root@slave2:/usr/local/ 登录到slave1: cd data #zookeeperhome目录下的data文件夹 echo "2">myid 登录到slave2: cd data echo "3">myid 5、运行zookeeper: ./bin/zkServer.sh start #zookeeper每个节点需要单独启动运行
7、修改spark配置,并同步到所有机器。
$ cd ~/bigdata/spark/conf $ cp spark-env.sh.template spark-env.sh $ vim spark-env.sh export SCALA_HOME=$HOME/bigdata/scala #export SPARK_MASTER_IP=master export SPARK_WORKER_MEMORY=1G export JAVA_HOME=/usr/lib/jvm/java-8-oracle export MASTER=spark://master:7077 export export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"
8、Spark Standalone HA运行:
1、分别启动三个节点的zookeeper: ./bin/zkServer.sh start #关闭服务,把start换成stop 2、在master启动Spark ./sbin/start-all.sh 3、启动StandBy Spark Master,假设为Slave1 ./sbin/start-master.sh 4、用jps查看进程 master节点包含: Master、Worker、Jps、QuorumPeerMain Standby节点(slave1):Master、Worker、Jps、QuorumPeerMain slave2节点:Worker、Jps、QuorumPeerMain
9、完了我们写个spark程序验证一下整个集群是否可用,参照 http://spark.apache.org/docs/latest/quick-start.html#self-contained-applications 写个程序来计算某个txt文件中含字母a的总行数和含字母b的总行数。新建mvn 工程myfirstsparkapp(可到附件下载),代码如下。然后通过 mvn clean package打出一个jar包MySimpleSpark-1.0-SNAPSHOT.jar
package com.jinn.spark; /** * @author zhanjun. * @version MyFistSparkApp, v 0.1 2016 16-1-18 上午7:34 zhanjun Exp $$ * @description */ import org.apache.spark.api.java.*; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.Function; /** * 计算txt 中含a 含b的总行数 */ public class SimpleApp { public static void main(String[] args) { /** * 保证这个readme.txt在集群的各个节点上都有 */ String logFile = "file:///home/sparker/bigdata/worksparce/readme.txt"; SparkConf conf = new SparkConf().setAppName("Simple Application"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> logData = sc.textFile(logFile).cache(); long numAs = logData.filter(new Function<String, Boolean>() { public Boolean call(String s) { return s.contains("a"); } }).count(); long numBs = logData.filter(new Function<String, Boolean>() { public Boolean call(String s) { return s.contains("b"); } }).count(); System.out.println("------Lines with a: " + numAs + ", lines with b: " + numBs); } }
把生成的jar 上传到spark集群的某个节点,并要求集群中所有节点都有我们的测试数据readme.txt(含英文的文本) 通过spark-submit提交任务:
spark-submit --class "com.jinn.spark.SimpleApp" --master spark://master:7077 ~/bigdata/worksparce/MySimpleSpark-1.0-SNAPSHOT.jar
可以看到执行结果:
恭喜您,部署成功了!
相关推荐
Spark环境搭建-Windows
Spark环境搭建-Linux
windows10下spark2.3.0本地开发环境搭建 win10上部署Hadoop非Cygwin、非虚拟机方式。安装目录为D:\setupedsoft。涉及相关组件版本: win10 家庭装,64位,x86处理器 JDK1.8.0_171 hadoop-2.7.6 Spark-2.3.0 Scala-...
Spark安装包:spark-3.1.3-bin-without-hadoop.tgz
在Ubuntu里安装spark,spark-2.1.0-bin-without-hadoop该版本直接下载到本地后解压即可使用。 Apache Spark 是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模...
Apache Spark版本3.1.3。Linux安装包。spark-3.1.3-bin-hadoop3.2.tgz
内容概要:由于cdh6.3.2的spark版本为2.4.0,并且spark-sql被阉割,现基于cdh6.3.2,scala2.12.0,java1.8,maven3.6.3,,对spark-3.2.2源码进行编译 应用:该资源可用于cdh6.3.2集群配置spark客户端,用于spark-sql
spark-3.0.0-bin-hadoop3.2下载安装包
spark-2.4.6-bin-hadoop2.7.tgz,可以下载
文件名: spark-3.4.1-bin-hadoop3.tgz 这是 Apache Spark 3.4.1 版本的二进制文件,专为与 Hadoop 3 配合使用而设计。Spark 是一种快速、通用的集群计算系统,用于大规模数据处理。这个文件包含了所有必要的组件,...
spark-3.1.2.tgz版本 & spark-3.1.2-bin-hadoop2.7.tgz版本
spark-2.1.0-bin-hadoop2.7.tgz linux 安装文件 。
pyspark本地的环境配置包,spark-2.3.4-bin-hadoop2.7.tgz:spark-2.3.4-bin-hadoop2.7.tgz
spark-3.2.4-bin-hadoop3.2-scala2.13 安装包
本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载,本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载
spark-3.2.0-bin-hadoop3.2.tgz
spark-2.3.0-bin-hadoop2.7版本.zip
Spark专刊第一期-Spark最佳学习路径-黄忠 Spark专刊第一期-Spark最佳学习路径-黄忠
spark-streaming-kafka-0-8_2.11-2.4.0.jar