34、spark1.5.1
一、Spark 1.4.x的新特性
1、Spark Core
1.1 提供REST API供外界开发者获取Spark内部的各种信息(jobs / stages / tasks / storage info),基于这些API,可以搭建自己的Spark监控系统。
1.2 shuffle阶段,默认将map端写入磁盘的数据进行序列化,优化io性能。
1.3 钨丝计划(Project Tungsten),提供了UnsafeShuffleManager,使用缓存友好的排序算法,降低了shuffle的内存使用,提高了排序性能。 2、Spark Streaming
2.1 提供了新的Spark Streaming的UI,能够更好,更清晰的监控Spark Streaming应用程序的运行状况。
2.2 支持Kafka 0.8.2版本 3、Spark SQL and DataFrame
3.1 支持ORCFile
3.2 提供了一些window function(窗口函数)
3.3 优化了join的性能
二、Spark 1.5.x的新特性
1、DataFrame底层执行的性能优化(钨丝计划第一阶段)
1.1 Spark自己来管理内存,而不再依靠JVM管理内容。这样就可以避免JVM GC的性能开销,并且能够控制OOM的问题。
1.2 Java对象直接使用内部的二进制格式存储和计算,省去了序列化和反序列化的性能开销,而且更加节省内存开销。
1.3 完善了Shuffle阶段的UnsafeShuffleManager,增加了不少新功能,优化shuffle性能。
1.4 默认使用code-gen,使用cache-aware算法,加强了join、aggregation、shuffle、sorting的性能,增强了window function的性能,性能比1.4.x版本提高数倍 2、DataFrame
2.1 实现了新的聚合函数接口,AggregateFunction2,并且提供了7个新的内置聚合函数。
2.2 实现了100多个新的expression function,例如unix_timestamp等,增强了对NaN的处理
2.3 支持连接不同版本的hive metastore
2.4 支持Parquet 1.7 3、Spark Streaming:更完善的python支持、非实验的Kafka Direct API等等。
三、spark1.5.1源码编译
掌握了源码编译,就具备了对Spark进行二次开发的基本条件了!如果你要修改Spark源码,进行二次开发,那么首先就得从官网下载指定版本的源码,然后导入你的ide开发环境,
进行源码的修改;接着修改完了,你希望能够将修改后的源码部署到集群上面去,那么是不是得对源码进行编译,编译成可以在linux集群上进行部署的格式包吧! 1、http://d3kbcqa49mib13.cloudfront.net/spark-1.5.1.tgz //下载源码包
2、准备好JDK、Scala、Maven环境
3、针对指定hadoop版本进行编译:./make-distribution.sh --tgz -Phadoop-2.6 -Pyarn -DskipTests -Dhadoop.version=2.6.0 -Phive
4、经长时间的编译之后,得到spark-1.4.0-bin-2.6.0.tgz
四、安装spark1.5.1
1、解压安装
之前测试集群用的spark1.3,现在将spark升级为spark1.5.1
1、停止Spark 1.3.0集群:SPARK_HOME/sbin/stop-all.sh
2、将spark-1.5.1-bin-hadoop2.4.tgz上传到/usr/local目录下。
3、解压缩spark包:tar zxvf spark-1.5.1-bin-hadoop2.4.tgz。
4、修改spark环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export ZOOKEEPER_HOME=/usr/local/zk
export SCALA_HOME=/usr/local/scala
export SPARK_HOME=/usr/local/spark-1.5.1-bin-hadoop2.4
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin
2、修改spark-env.sh
1、cd /usr/local/spark/conf
2、cp spark-env.sh.template spark-env.sh
3、vi spark-env.sh #写入下列几行
export JAVA_HOME=/usr/java/latest
export SCALA_HOME=/usr/local/scala
export SPARK_MASTER_IP=192.168.1.135
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
3、修改slaves文件
cp conf/slaves.template conf/slaves vim conf/slaves
spark2
spark3
4、分发
scp -r spark-1.5.1-bin-hadoop2.4 root@spark2:/usr/local/
scp -r spark-1.5.1-bin-hadoop2.4 root@spark3:/usr/local/ 分发完以后,分别编辑spark2、spark3两台主机的/etc/profile文件,将spark1.5.1的环境变量写入,并source;
5、启动
1、在spark目录下的sbin目录
2、执行./start-all.sh
3、使用jsp和8080端口可以检查集群是否启动成功
4、进入spark-shell查看是否正常
6、进入spark-shell测试
scala> val lines = sc.textFile("hdfs://spark1:9000/spark.txt")
scala> val words = lines.flatMap(line => line.split(" "))
scala> val pairs = words.map(word => (word,1))
scala> val counts = pairs.reduceByKey(_ + _)
scala> counts.foreach(count => println(count._1 + ": " + count._2))
34、spark1.5.1的更多相关文章
- 34、[源码]-AOP原理-链式调用通知方法
34.[源码]-AOP原理-链式调用通知方法
- 34、mysql数据库(介绍)
34.1.什么是数据库: 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织. 描述和存储,具有较小的冗余,较高的数据独立性和易扩 ...
- 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...
- 34、JS/AJAX
1)回顾JS中核心内容 2)了解WEB1.0和WEB2.0时代的技术与特点 3)理解AJAX的产生背景.工作原理与特点 4)掌握AJAX常用API及应用 声明:服务端使用Servlet技术 一 ...
- 34、Shiro框架入门三,角色管理
//首先这里是java代码,就是根据shiro-role.ini配置文件中的信息来得到role与用户信息的对应关系//从而来管理rolepublic class TestShiroRoleTest e ...
- (转) ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(
chr(9) tab空格 chr(10) 换行 chr(13) 回车 Chr(13)&chr(10) 回车换行 chr(32) 空格符 ...
- ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)
chr(9) tab空格 chr(10) 换行 chr(13) 回车 Chr(13)&chr(10) 回车换行 chr(32) 空格符 ...
- 34、锁问题与线程queue
上一篇随笔我们学了全局解释器锁,前面也学了互斥锁,今天学习一些与锁相关的点,例如递归锁,信号量,Event,还会学习我们已经很熟悉的队列,不过这次的队列是作为一个模块出现的. 一.同步锁 1.join ...
- Python自学:第三章 动手试一试 3-4、3-5
# -*- coding: GBK -*- liebiao = ["zhang", "li", "wang", "zhou&quo ...
随机推荐
- golang ---获取磁盘信息
package main import ( "fmt" "github.com/StackExchange/wmi" ) type Storage struct ...
- Spring Boot,Spring Security实现OAuth2 + JWT认证
阅读此文,希望是对JWT以及OAuth2有一定了解的童鞋. JWT认证,提供了对称加密以及非对称的实现. 内容源码点我 涉及到源码中两个服务 spring-boot-oauth-jwt-server ...
- 机器学习 降维算法: isomap & MDS
最近在看论文的时候看到论文中使用isomap算法把3D的人脸project到一个2D的image上.提到降维,我的第一反应就是PCA,然而PCA是典型的线性降维,无法较好的对非线性结构降维.ISOMA ...
- MY SQL 两种安装方式
MySQL基础知识-安装MySQL 前导: 昨天去参加了一个面试,公司不太大,是一家日资企业,在国内有几家分公司,面试官问到了MySQL的基本操作和性能优化,说了一大堆,倒是比较轻松的过了,但是面 ...
- IOS - UDID IDFA IDFV MAC keychain
在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理.我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊. 具体可以分为如下几种: UDID IDFA IDFV ...
- jupyter安装出现问题:安装后无法打开
jupyter安装出现问题:安装后无法打开 traitlets.traitlets.TraitError: Could not decode 'C:\Users\\xce\xa2\xcc\xf0\xd ...
- PHP 结合 Boostrap 结合 js 实现学生列表删除编辑以及搜索功能(完结)
这个自己的小项目要先告一段落了.可能还有许多bug.请见谅 删除学生功能 PHP: // 这里是通过前端代码HTML中的 url 传过来的,用 $_GET 来获取(相关HTML代码可以看一下到主页看一 ...
- React Native 开发豆瓣评分(五)屏幕适配方案
前言 React Native 是以实际像素 dp 为单位的,这导致在不同分辨率的屏幕会有不一样的显示情况. 在原生 Android 中,可以根据不同的分辨率添加不同的样式目录,以解决不同分辨率的问题 ...
- Androidx初尝及其新旧包对照表
x的最低实验条件 AndroidStudio 3.2.0+ gradle:gradle-4.6以上 本次实验条件: AndroidStudio 3.3 (强制要求最低gradle版本为gradle-4 ...
- zabbix-proxy及ELK
1.添加tomcat监控模版 yum install java-1.8.0-openjdk tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp ...