spark-初探

来源:互联网 发布:绝地求生优化设置 编辑:程序博客网 时间:2024/05/23 01:16
Spark关键数据结构:
RDD(Resilient Distributed Dataset)--> 弹性分布式数据集
RDD有actions(有返回值),transformations(产生新的RDD);
filter和map是transformations动作;

val textFile = sc.textFile("/home/centos/wc.txt");
val wordCountMap = textFile.flatMap(_.split(" ")).map(word => (word, 1));
val count = wordCountMap.reduceByKey((a, b) => a + b).collect();


val textFile = sc.textFile("file-path-to-handle") //sc是spark内置的变量
val wordMap = textFile.flatMap(line => line.split(" "));//产生单词RDD[String];
val wordCountMap = word.map(word => (word, 1)); //产生RDD[String, Int]映射
val count = wordCountMap.reduceByKey((a, b) => a + b).collect;//计算出单词统计结果


Spark SQL: 支持使用SQL语句和DataFrame API(Scala, Java,Python, R)
Spark Streaming: 处理实时数据流处理(Scala,Java,Python)
Spark MLlib:支持开发机器学习应用
Spark GraphiX: 图处理和支持增长的图算法库;

Spark集群部署:
1、复制spark/conf/默认配置文件;
cd spark/conf/
cp slaves.template slaves
添加奴隶节点;
cp spark-default.conf.template spark-default.conf //以后做修改
cp spark-env.sh.template spark-env.sh 文件,添加JDK配置
JAVA_HOME=/soft/jdk
--------------------------------------------------------
2、分发安装文件到其他节点
--------------------------------------------------------
3、修改/etc/profile文件,添加
export SPARK_HOME=/Cloudary/spark/
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

4、source /etc/profile,让环境变量生效;
--------------------------------------------------------
5、在主节点开启 start-master.sh脚本;
--------------------------------------------------------
6、启动奴隶节点
start-slave.sh spark://master-ip:7077//master-ip是主节点的IP地址;
(或者在主节点的spark/sbin/start-all.sh启动集群)
--------------------------------------------------------
7、关闭spark集群
spark/sbin/stop-all.sh
--------------------------------------------------------
8、在浏览器中查看集群是否启动成功
master-ip:8080//例如 192.168.80.150:8080

分析Spark的start-all.sh脚本
1、启动spark-config.sh
2、启动spark-master.sh 
3、启动spark-slaves.sh

分析spark-config.sh 
1、判断是存在SPARK_HOME环境变量;
2、导出Spark配置文件目录
3、导出Python的环境变量


分析start-master.sh脚本
org.apache.spark.deploy.master.Master.scala//Spark Master在源码包中的位置;
org.apache.spark.SparkConf.scala//Spark的配置类;
start-master.sh --help//打印帮助信息
-h HOST, --host HOST   Hostname to listen on//主节点IP
-p PORT, --port PORT   Port to listen on (default: 7077)//主节点端口
--webui-port PORT      Port for web UI (default: 8080)//Web UI端口
--properties-file FILE Path to a custom Spark properties file.//Spark集群主节点属性文件;
 Default is conf/spark-defaults.conf.
spark-daemon.sh start $CLASS 1 \//调用spark-deamon.sh开启集群;
--host $SPARK_MASTER_HOST --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT \

slaves.sh脚本读取配置目录中的slaves配置文件;


Windows下编译Spark-2.1.0:

1、需要安装cygwin,将,cygwin的bin路径添加到系统PATH环境变量中

2、安装maven-3.3.9版本,将maven的bin添加到PATH环境变量

3、使用cygwin切换到spark源码根目录,执行mvn -DskipTests clean package


编译Spark-2.1.0失败错误总结:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce
(enforce-versions) on project spark-parent_2.11: Some Enforcer rules have
failed. Look above for specific messages explaining why the rule failed.
原因:maven版本不匹配,需要3.3.9版本

0 0
原创粉丝点击