欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spark 安装教程(spark环境搭建及配置)

程序员文章站 2023-11-29 14:39:22
一 .spark 安装配置注:按照自己saprk 安装包版本安装1、下载,解压$tar zxf spark-1.6.1-bin-2.5.0-cdh5.3.6.tgz-c /opt/modules/2、...

一 .spark 安装配置

注:按照自己saprk 安装包版本安装

1、下载,解压

$tar zxf spark-1.6.1-bin-2.5.0-cdh5.3.6.tgz

-c /opt/modules/

2、配置

重命名mv spark-env.sh.template spark-env.sh

java_home=/opt/modlues/jdk1.7.0_67

scala_home=/opt/modlues/scala-2.10.4

hadoop_conf_dir=

/opt/modlues/hadoop-2.5.0/etc/hadoop

3、启动hdfs服务

$sbin/hadoop-daemon.sh start namenode

$sbin/hadoop-daemon.sh start datanode

$sbin/start-master.sh

$start-slaves.sh

4、常见问题

命令强制离开

$bin/hadoop dfsadmin -safemode leave

二、实现wordcount

//hdfs path

方式一

val rdd = sc.textfile(“/input/wc.txt”)

//这是在内存中处理 flatmap函数 这是匿名函数

按行读取分割split

val wcrdd=rdd.flatmap(line=>line.split(“\t”)).map(word

=>(word,1)).reducebykey((a,b)=>(a+b))

//保存到hdfs

wcrdd.saveastextfile(“wc-spark”)

方式二

val wcrdd=sc.textfile(“/input/wc.txt”).flatmap(line

=>line.split(“\t”)).map(word=>(word,1)).reducebykey((a,b)

=>(a+b)).saveastextfile(“wc-spark”)

方式三

val rdd = sc.textfile(“/input/wc.txt”)

//分割这个行

val linerdd=rdd.flatmap(line=>line.split(“\t”))

//元组对出现一个 就是一个元组对

val kvrdd=linerdd.map(word=>(word,1))

val wcrdd=kvrdd.reducebykey((a,b)=>(a+b))

wcrdd.saveastextfile(“wc-spark”)

方式四

val rdd = sc.textfile(“/input/wc.txt”)

val wcrdd=rdd.flatmap(_.split(“\t”)).map

((_,1)).reducebykey((_+_))

wcrdd.saveastextfile(“wc-spark”)

spark sc:sparkcontext(上下文)

spark context available as sc.

三、spark常用函数

过滤filter

val rdd = sc.textfile(“/input/wc.txt”).filter

(line=>line.contains(“hadoop”))

val wcrdd=rdd.flatmap(_.split(“\t”)).map

((_,1)).reducebykey((_+_))

循环foreach

wcrdd.foreach(word=>println(word))

//查看函数

wcrdd.first

wcrdd.take(3)

wcrdd.top(3)

wcrdd.collect 查看结果

wcrdd.count

//缓存

wcrdd.cache

wcrdd.count//使缓存生效

四、spark 二次排序

分析:(spark,2)=》(2,spark)》sortbykey(false)=》

(2,spark)=》(spark,2)

代码:

val rdd = sc.textfile(“/input/wc.txt”)

val wcrdd=rdd.flatmap(_.split(“\t”)).map

((_,1)).reducebykey((_+_))

val sortrdd=wcrdd.map(word=>(word._2,word._1)).

sortbykey(false).map(word=>(word._2,word._1))

sortrdd.collect

//top:自带排序

val sortrdd=wcrdd.map(word=>(word._2,word._1)).top(3)

五、spark standalone集群模式的配置

1、sparp-evn

//主节点配置

spark_master_ip=li(主机名)

spark_master_port=7077

spark_master_webui_port=8080

//从节点配置

spark_worker_cores=2

spark_worker_memory=2g

spark_worker_port=7078

spark_worker_webui_port=8081

spark_worker_instances=1

2、slaves

写入hostname名称:自己主机名

3、启动服务

$sbin/start-master.sh

$start-slaves.sh

4、spark-shell常用命令行参数

帮助信息查看:

$bin/spark-shell –help

(1)spark运行在本地模式下:

$bin/spark-shell –master local

或者$bin/spark-shell

//本地

bin/spark-shell \

–class org.apache.spark.examples.sparkpi \

–master local \

–jars lib/spark-examples-1.6.1-hadoop2.5.0-cdh5.3.6.jar \

100

//集群

bin/spark-shell \

–class org.apache.spark.examples.sparkpi \

–master spark://bigdata.beifeng.com:7077 \

–jars lib/spark-examples-1.6.1-hadoop2.5.0-cdh5.3.6.jar \

100

spark-shell和spark-submit

一般执行脚本时使用spark-shell;

一般向集群提交job是使用spark-submit。

spark-shell的本质是spark-submit

spark-shell和spark-submit通知只能使用一个

//本地

bin/spark-submit \

–class org.apache.spark.examples.sparkpi \

–master local \

lib/spark-examples-1.6.1-hadoop2.5.0-cdh5.3.6.jar \

100

//集群

bin/spark-submit \

–class org.apache.spark.examples.sparkpi \

–master spark://bigdata.beifeng.com:7077 \

lib/spark-examples-1.6.1-hadoop2.5.0-cdh5.3.6.jar \

100

//spark开发时模式的使用

一般本地模式适合本地开发测试。集群模式适合生产环境

六、spark日志聚合功能配置

1、spark-env.sh

spark_history_opts=”-dspark.history.fs.logdirectory

=hdfs://192.168.1.1:8020/user/li/spark-events”

注:spark-events目录需要创建

2、spark-default.conf

spark.eventlog.enabled

true

spark.eventlog.dir

hdfs://192.168.1.1:8020/user/li/spark-events

注:spark.eventlog.dir 目录和


-dspark.history.fs.logdirectory保持一致

3、启动history服务

$sbin/start-history-server.sh