【发布时间】:2017-11-27 01:01:01
【问题描述】:
遇到一些基本问题,希望有人能解决。
所以我想在我的应用程序中使用 Apache Kafka 和 Apache spark。我已经阅读了许多教程,并大致了解了它是什么以及它是如何工作的。
用例:
数据将从移动设备(多个设备,比如说 1000 个)以 40 秒的间隔生成,我需要处理该数据并将值添加到数据库中,然后这些值将反映在仪表板中。
我想做的是使用 Apache Streams 并从 android 本身发出一个 post 请求,然后这些数据将由 spark 应用程序处理,就是这样。
问题:
- Apache Spark
我正在按照本教程启动并运行它。(我使用的是 JAVA,而不是 scala) 链接:https://www.santoshsrinivas.com/installing-apache-spark-on-ubuntu-16-04/
一切完成后,我执行 spark-shell 并启动。我还在服务器上安装了 zookeeper 和 kafka,并在后台启动了 Kafka,所以这不是问题。
当我运行http://161.xxx.xxx.xxx:4040/jobs/ 时,我得到了这个页面
在我浏览过的所有教程中,都有这样的页面:https://i.stack.imgur.com/gF1fN.png 但我不明白。是不是spark没有正确安装?
现在,当我想部署一个独立的 jar 来触发时,(使用此链接:http://data-scientist-in-training.blogspot.in/2015/03/apache-spark-cluster-deployment-part-1.html)可以运行它。
即使用命令:spark-submit --class SimpleApp.SimpleApp --master spark://http://161.xxx.xxx.xxx:7077 --name "try" /opt/spark/bin/try-0.0.1-SNAPSHOT.jar,我得到输出。
如果我想使用它,我是否需要每次都提交申请?
这是我的程序:
package SimpleApp;
/* SimpleApp.java */
import org.apache.spark.api.java.*;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.Function;
public class SimpleApp {
public static void main(String[] args) {
String logFile = "/opt/spark/README.md"; // Should be some file on your system
SparkConf conf = new SparkConf().setAppName("Simple Application").setMaster("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
//System.setProperty("hadoop.home.dir", "C:/winutil");
sc.setLogLevel("ERROR"); // Don't want the INFO stuff
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);
System.out.println("word count : "+logData.first());
sc.stop();
}
}
现在如何将 Kafka 集成到其中?
如何配置应用程序,使其每次都能执行 kafka收到消息了吗?
此外,我是否需要制作一个 REST API,我需要通过它发送 kafka 的数据,即 REST api 将用作生产者? spark Java 框架之类的东西? http://sparkjava.com/
如果是,瓶颈将再次发生在 REST api 级别,即如何 许多请求它可以处理或不能处理,因为我到处都读到 Kafka 的吞吐量非常高。
最终的结构是否会像 SPARK JAVA -> KAFKA -> APACHE 火花?
最后如何在本地设置开发结构 设备?我安装了 kafka/apache spark。我正在使用 Eclipse。
谢谢
【问题讨论】: