创建一个基于spark的scala工程,并在spark standalone的集群环境中运行。...创建一个基于spark+akka的scala工程,并在spark standalone的集群环境中运行。...sbt包用于开发环境,在测试环境和生产环境可以不要。...注意:不要复制所有的akka文件,akka类库中的某些文件的版本可能会和spark的有冲突, 在运行apark应用时,会出现java.lang.ExceptionInInitializerError。...在集群环境中,运行spark的sample $SPARK_HOME/bin/run-example --master spark://$(hostname):7077 SparkPi 10 后面的参数是
近来OpenStack折腾的稍见成效,历经九九八十一Failure后成功的在16台服务器上搭建了云平台,于是干了一件疯狂的事情——在OpenStack上创建建立几台虚拟机,并用他们搭建了Hadoop集群...,完事将之前的geotrellis代码运行在集群上。...spray来发布http服务,这样会造成总总的版本冲突,前面我还专门有写文章来探讨版本冲突及解决方案。...1.1.1版直接使用akka发布http服务,而无需spray便少了很多冲突的可能性。...虽然部署OpenStack等运维层面的工作以及单片机、嵌入式等硬件层面的工作我都很喜欢,成功后都会给我带来深深的享受之感,其实我更喜欢写代码,一行行优美的如同艺术品的代码从大脑经过指尖展示在显示屏上,而后便能看到所有的事情全部按照自己预想的方式运行
gRPC的ssl/tls的原理是在服务端安装安全证书公用certificate和私钥key, 在客户端安装公共证书就可以了,gRPC代码是这样写的: // Server SslContext sslContext..." % "0.9.2") libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.9.0-M6" 在sbt中执行dependencyTree...好像缺失了io.netty:netty-tcnative-boringssl-static:jar,按照对应的gRPC版本在build.sbt里加上: name := "learn-grpc" version...不过客户端在使用了证书后仍然无法连接到服务端。没办法,又要再去查资料了。看来现在应该是证书的问题了。先看看是不是因为使用的证书是自签的self-signed-certificate。...那么上面的.overrideAuthority("foo.test.google.fr")又是什么意思呢?算了,以后有时间再研究吧。这次起码证明grpc ssl/tls是可以发挥作用的。
,对于搭建开发环境,只需要设置一个配置项: export JAVA_HOME=/data/spark/java 在准备工作中,我们已经将其加入到 shell 环境变量中了,但在运行 shell...spark-shell 启动时,会导入相关依赖库,并创建名称为 "sc" 的 SparkContext 对象,这个对象是通向 spark 世界的向导,我们已经可以在交互环境开始第一次 Spark 分布式计算之旅了...重要: scalaVersion 必须与当前 spark 使用的 scala 版本一致,否则生成的 jar 包不一定能在 spark 环境中运行,这个版本可以通过查看 $spark_root/jars/...托管依赖指在远程组件仓库(maven, ivy 等)管理的依赖包,工程中定义声明下使用的版本,编译时直接从远程下载。非托管依赖只存在于本地的依赖包,默认为工程根目录下 "lib" 子目录。...6、提交运行 终于可以 run 了~~~~ # 之前已经通过 nfs 将 hdfs 挂载到本地文件系统中,先删除 output 目录,避免程序结束时保存结果冲突 $ rm -rf /mnt/hdfs
sbt 项目依赖 在使用 scala 的时候,大家一定要注意自己的sdk版本以及配置的依赖包的版本要一致,如果不符,就会出现各种奇怪的问题 libraryDependencies += "org.apache.spark...+= "com.typesafe.akka" %% "akka-stream" % "2.6.10" akka Akka是JAVA虚拟机平台上构建高并发、分布式和容错应用的工具包和运行时。...Akka特点: 对并发模型进行了更高的抽象 是异步、非阻塞、高性能的事件驱动编程模型 是轻量级事件处理(1GB内存可容纳百万级别个Actor) 它提供了一种称为Actor的并发模型,其粒度比线程更小,你可以在系统中启用大量的...它提供了一套容错机制,允许在Actor出现异常时进行一些恢复或重置操作。 Akka既可以在单机上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Actor定位服务。...} /** * 为了不让while的运行速度在receive方法之上,我们可以让他休眠0.1秒 */ Thread.sleep(100) }
二、SBT简介 使用Scala语言编程,最好使用SBT框架,可以自动帮你完成包管理等,相当于java中的maven,下面先简单介绍一下SBT基础。 ...安装完成之后,在IDEA中安装sbt插件,然后选择创建SBT项目,与普通Scala语言最主要的不同是会创建一个build.sbt文件,这个文件主要记录的就是项目的依赖等,要添加依赖就可以添加如下两行代码...引入akka只需要在build.sbt文件中添加在SBT操作一节中介绍的代码即可,但是要根据自己的Scala版本以及要使用的akka版本进行修改。添加完之后IDEA会自动去下载akka的actor包。...的system,用于管理Actor,第二句就是在system中创建一个上面MyActor实例。...的子Actor,具体命令如下: val remoteActor = context.actorSelection("akka.tcp://remoteSys@127.0.0.1:5150/user/remoteactor
Test 配置:测试时依赖,仅在测试时可用。 Provided 配置:编译时依赖,但不包含在打包中,通常用于容器或框架提供的库。 Runtime 配置:运行时依赖,不在编译时使用。...sbt的依赖冲突及解决 在sbt中,依赖冲突通常指的是当项目中存在多个依赖项,而这些依赖项又引入了相同的库但是不同的版本时所产生的问题。...的依赖管理我们已经铺垫了很多东西,接下来我们就进入它的底层实现原理: sbt 依赖管理的底层基本原理 我们首先需要了解的就是sbt的依赖树,我们在解决依赖冲突时提到过 依赖树 在依赖管理中,所有的依赖组成一个树状结构...它会根据声明中指定的组、模块和版本信息来确定正确的依赖项,并下载对应的 JAR 文件。 4 依赖项冲突解决 在解析依赖项的过程中,可能会出现依赖项冲突的情况,即同一个模块被多个不同的版本所依赖。...sbt使用 Ivy 的冲突解决策略来解决这些冲突,通常是选择最接近项目要求的版本。关于这些冲突问题后面会有提到。
同时考虑到所有HTTP元素必须匹配(方法,url,标题,正文和查询) 用于验证消费者契约的实际测试的定义: 此代码将针对以前的方案运行,虚拟服务器将响应 交互部分中定义的唯一HTTP请求(如果响应为deined...sbt: sbt test:它执行扩展了FunSpec和WordSpec的所有测试(如在build.sbt定义) sbt pactTest:它执行所有pacts测试 该测试验证了消费者协议,并生成提供者必须遵守的契约...所以我们可以实现一个数据库迁移,它能够在启动时应用任何必要的数据库更改来执行应用程序。...test命令来做到这一点 如果我们启动服务器,用sbt run命令,并执行GET /search/category,我们应该得到我们的两个类别: pasted image 0.png 总结 消费者驱动的契约测试是一项非常棒的技术...解决了如何在消费者和提供者项目之间共享契约验证结果的问题 告诉您可以将应用程序的哪个版本安全地部署在一起,自动地将您的合同版本部署在一起 允许您确保多个消费者版本和提供者版本之间的向后兼容性(例如,在移动或多租户环境中
在测试结束时,Gatling会自动生成详尽,动态且丰富多彩的报告。 平均值和平均数据是不够的:使用Gatling,您可以得到适当的响应时间百分位数。不要让最慢的用户落后! ?...例:ulimit -n $ ulimit -n 65536 但是,这只会更改当前shell会话的限制。在系统范围内,永久性地更改限制因系统而异。...然后,您只需要一个文本编辑器(Scala语法高亮)来编辑模拟,您就可以从命令行启动Gatling。 查看我们的下载页面以获取下载链接。 将下载的包解压缩到您选择的文件夹中。...与OSX一样,操作系统有自己的棘手方法来发现要运行的Java版本,因此最终可能会运行与您告诉您的版本不同的版本。如果您遇到奇怪的错误,并且您希望运行JDK8,则可能需要明确设置JAVA_HOME。...有了这个插件,Gatling可以在构建项目时启动,例如使用您最喜欢的CI解决方案。 Versions 查看Maven Central上的可用版本。
降低版本后的sbt依赖如下: "io.spray" % "spray-routing" % "1.2.3", "io.spray" % "spray-can" % "1.2.3...", 造成这个问题的原因应该是spray与cloudera运行时classpath中的某个库冲突了,通过以上方式应该能解决这个问题,解决了这个问题后就可以正常发起WEB服务运行我们的APP...运行的日志文件,不然应该也较快的解决了,日志文件在/var/log/accumulo中),反复检查Accumulo配置等等,均没有问题,最后使出了一个大招,程序加了个try catch,果然出现问题了,...三、总结 本文为大家介绍了我在将geotrellis程序部署到CDH中遇到的几个问题及解决方案,看似简单的几句话的事情,其实足足折腾了好几天。...而且每个人由于实际配置版本等不同,在部署的过程中可能会遇到这些问题,也可能会遇到新的问题。总之,只要你能够自己折腾那么一番不管结果如何,一定会在过程中学到很多东西。
scala 缓存 Spark 支持在集群范围内将数据集缓存至每一个节点的内存中,可避免数据传输,当数据需要重复访问时这个特征非常有用,例如查询体积小的“热”数据集,或是运行如 PageRank 的迭代算法...我们选择 Netcat 0.6.1 版本,在终端中运行如下命令进行安装: wget http://downloads.sourceforge.net/project/netcat/netcat/0.6.1...9999 Shell 命令 接着在终端 1 中输入文本,在终端 2 中就可以实时看到单词统计结果了。...启动 Spark shell 的过程中,当输出到 Spark 的符号图形时,可以看到相关的版本信息。 ?...Shell 命令 接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容: #!
我们知道,在集群环境节点之间进行交换的数据必须经过序列化/反序列化处理过程,而在这方面protobuf是一个比较高效、易用的模式。...用户首先在.proto文件中用IDL来定义系统中各种需要进行交换的数据类型。然后用protoc编译器自动产生相关的源代码,里面包括了完整的序列化处理函数。...在一个集成的系统环境内,protobuf数据必须保持与所有系统的松散耦合,不能对这些用户系统有任何依赖。...在使用方sbt项目里可以用unmanagedBase指定.jar路径或者把包放到默认的lib/目录下: lazy val commonSettings = Seq( name := "using-common-protobuf-data...test-resources" 3、改变默认附加库路径:(lib/) unmanagedBase := baseDirectory.value / "jars" //只在编译时引用 unmanagedBase
准备环境 安装JDK8 单击这里下载并安装JDK8,安装完成后在命令行查看Java的版本号: C:\Users\Lenovo>java -version java version "1.8.0_111...第一次启动时,由于SBT要下载大量的依赖,所以时间可能会久一点,倒数第二行表明,Play项目已经在9000端口启动成功了。...Play并没有实现Servlet容器,而是使用Akka Http实现了一个高性能的Http服务器,所以Play项目的运行不依赖于Tomcat等Servlet容器。...通常的开发流程是:首先在命令行执行sbt run,以开发模式启动项目,在浏览器中打开http://localhost:9000 ,然后在IDEA中修改代码,改完后直接刷新浏览器即可。...这是由于模板函数index是在项目编译过程中动态生成的,所以新增的模板函数在IDEA中会提示找不到,这时只要在命令行执行sbt compile,然后在SBT projects窗口单击蓝色刷新按钮,错误即会消失
http://spark-packages.org/ 当你想用一个Spark package时,可以在spark-submit命令或者spark- shell命令中增加包选项: $ $Spark_HOME...如果要在你的项目中包含此插件,请务必在sbt项目的project/plugins.sbt文件中写入下面的代码: resolvers += "bintray-Spark-packages" at "https...% "0.2.3") 发布Spark包时必须提供如下信息,应该把它们写到build.sbt中: spName——package的名称。...现在,假设你的job已经通过REST API发送。在spark-jobserver项目目录下有一个著名的单词计数例子。下载这个例子的源码后,用sbt命令编译。...(2)选择运行在spark-jobserver上的主类。 提交job时不需要每次都编写Spark应用或者编译它,即使你想与其他人共享。
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境。...在Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用中,我们已经写好了一个Spark的应用。...本文的目标是写一个基于kafka的scala工程,在一个spark standalone的集群环境中运行。 项目结构和文件说明 说明 这个工程包含了两个应用。...+Kafka结合的技术,有个限制的绑定了kafka的8.x版本。...运行: sbt package 第一次运行时间会比较长。
本篇文档是介绍如何快速使用spark,首先将会介绍下spark在shell中的交互api,然后展示下如何使用java,scala,python等语言编写应用。可以查看编程指南了解更多的内容。...在shell中,既可以使用scala(运行在java虚拟机,因此可以使用java库)也可以使用python。可以在spark的bin目录下启动spark shell: ....这个程序仅仅是统计文件中包含字符a和b的分别都有多少行。你可以设置YOUR_SPARK_HOME替换自己的文件目录。不像之前在shell中的例子那样,我们需要自己初始化sparkContext。.../src/main/scala/SimpleApp.scala # Package a jar containing your application 运行sbt命令进行打包 $ sbt package...那么可以参考下面的链接获得更多的内容: 为了更深入的学习,可以阅读Spark编程指南 如果想要运行Spark集群,可以参考部署指南 最后,Spark在examples目录中内置了多种语言版本的例子,如scala
本文的主要内容是帮助初学者从头到尾构建并运行一个Scala项目,重点在于讲解国内镜像仓库的配置。...在 SBT 中,有三种方法可以设置 Java System Property,可以根据需要自行选择。...SBT_OPTS="-Dsbt.override.build.repos=true" 方法三: 传入命令行参数 执行 sbt 命令时, 直接在命令后面加上配置参数, sbt -Dsbt.override.build.repos...=true -Dsbt.repository.config=path_to_repositories_file 第三步:构建并运行第一个Scala项目 1)修改项目SBT构建版本 单击 hello-scala...shell , 第一次进入 sbt shell 时,由于需要下载相关依赖,大概需要几十秒时间,第二次及以后进入 sbt shell 会很快。
Geotrellis主要涉及到的知识点包括Scala,sbt,Spark,Akka。貌似每项都不是善茬,基本都没有怎么接触过,除了Scala稍微接触过,那么只能完全从头开始学习了。...完全没有思路,看到sbt,那就开始学习sbt吧,sbt其实是相当于Maven的一个框架,能够帮我们管理scala项目,刚开始为了跑例子,也没有怎么研究,就是看到说直接到项目目录运行....部署了Spark环境(参考之前的一篇文章使用Ambari安装hadoop集群),然后又研究了sbt,在Windows的笔记本上搭建了开发环境(IDEA+SCALA+SBT),这块网上的介绍也很多,不在这里介绍...然后把Geotrellis clone到本地,简单看了一下源码,发现比较高深,一筹莫展,打个jar包放到服务器上,运行spark-shell然后按照reademe中的步骤一步步来,无奈一直报错,根本不知道什么原因...)是geotrellis的helloworld,clone本地之后运行,OK一切正常,然后将geotrellis项目中的Reademe中的东西拿来测试,OK跑通,心中甚是激动。
在http/1应用中对二进制文件的传输交换有诸多限制和不便,特别是效率方面的问题。在protobuf这种序列化模式中对任何类型的数据格式都一视同仁,可以很方便的实现图片等文件的上传下载。...实际上,在使用scalaPB的过程中一直在关注akka-grpc的发展,直到v1.01发布。这是一个正式版本,相信不会在模式、风格、语法上再有大的改变,应该值得试着使用了。...也许,在开发一套内部IT系统的过程中akka-grpc可以很趁手。...在akka-grpc的官网上有很好的示范例子。我在例子的基础上增加了身份验证使用的示范。...上面提到,虽然http/2推出已经不短时间了,但尚未得到普及性的认可。即使是低点版本的websocket,也只能在一小撮专业的应用中得到使用。
任何类型的实例作为消息在两端独立系统的机器之间进行传递时必须经过序列化/反序列化serialize/deserialize处理过程。...假设以下场景:在一个网络里有两台连接的服务器,它们分别部署了独立的akka系统。如果我们需要在这两台服务器的akka系统之间进行消息交换的话,所有消息都必须经过序列化/反序列化处理。...在akka中使用自定义序列化方法包括下面的这些步骤: 1、在.proto文件中对消息类型进行IDL定义 2、用ScalaPB编译IDL文件并产生scala源代码。...这些源代码中包括了涉及的消息类型及它们的操作方法 3、在akka程序模块中import产生的classes,然后直接调用这些类型和方法 4、按akka要求编写序列化方法 5、在akka的.conf文件里...actor.serializers段落中定义akka的默认serializer 下面的build.sbt文件里描述了程序结构: lazy val commonSettings = Seq( name
领取专属 10元无门槛券
手把手带您无忧上云