到目前为止,我只在Linux机器和虚拟机(桥接网络)上运行Spark,但现在我对使用更多计算机作为奴隶感兴趣.在计算机上分发Spark Slave Docker容器并让它们自动连接到硬编码的Spark master ip会很方便.这个缺点已经工作但是我在从属容器上配置正确的SPARK_LOCAL_IP(或start-slave.sh的--host参数)时遇到了问题.
我认为我正确配置了SPARK_PUBLIC_DNS env变量以匹配主机的网络可访问ip(来自10.0.xx地址空间),至少它显示在Spark主Web UI上并且可供所有机器访问.
我还按照http://sometechshit.blogspot.ru/2015/04/running-spark-standalone-cluster-in.html的说明设置了SPARK_WORKER_OPTS和Docker端口转发,但在我的情况下,Spark master正在另一个上运行机器而不是Docker内部.我正在从网络中的其他机器启动Spark作业,可能还运行从机本身.
我试过的事情:
我想知道为什么连接到从设备时没有使用配置的SPARK_PUBLIC_DNS?我以为SPARK_LOCAL_IP只会影响本地绑定但不会泄露给外部计算机.
在https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/troubleshooting/connectivity_issues.html,他们指示"将SPARK_LOCAL_IP设置为驱动程序,主服务器和工作进程的集群可寻址主机名",这是唯一的选择吗?我会避免额外的DNS配置,只需使用ips配置计算机之间的流量.或者有一种简单的方法来实现这一目标吗?
编辑: 总结当前设置:
我只是在学习语言而且我有一个简单的问题.为什么这样做(构造{:key "value"}
):
(#(assoc {} :key %) "value")
Run Code Online (Sandbox Code Playgroud)
但这不是:
(#({:key %}) "value")
ArityException Wrong number of args (0) passed to: PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:429)
Run Code Online (Sandbox Code Playgroud)
在Python上,后一种语法完全有效:
> (lambda v: {'key': v})('value')
{'key': 'value'}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢很好的答案,显然我需要停止思考#
与lambda
Python相同.
我已成功设置了Kibana 4.x仪表板和Elasticsearch 2.x,但我觉得5.x版本应该是未来的方法.但是由于某些原因,Kibana在尝试可视化数据时无法识别任何字段类型,尽管它在设置和发现视图上正确显示了类型.
关于这个的先前问题似乎是关于geo_point
类型的,但在这里我只是希望使用基本的数字和非分析的字符串字段.
两者都在Docker容器中运行而不对设置进行任何修改,FROM: kibana:5
并且FROM: elasticsearch:5
.我在这个Poc Elasticsearch实例上只有一个索引,它有一个显式的类型映射.我假设这个配置适用于ES 5.x以及2.x:
{
"mappings": {
"entry": {
"_source": {
"enabled": true
},
"properties": {
"times": {
"type": "float"
},
"tot_calls": {
"type": "integer"
},
"time": {
"type": "float"
},
"datetime": {
"type": "date",
"format": "YYYY-MM-dd HH:mm:ssZ"
},
"datetime_num": {
"type": "long"
},
"env": {
"type": "string",
"index": "not_analyzed",
"norms": {
"enabled": false
}
},
"ip": {
"type": "ip"
},
"day": {
"type": "integer"
},
"tags": {
"type": …
Run Code Online (Sandbox Code Playgroud) 我有一个由zlib.compress
Python创建的二进制文件,是否有一种简单的方法可以在 Clojure 中打开和解压缩它?
import zlib
import json
with open('data.json.zlib', 'wb') as f:
f.write(zlib.compress(json.dumps(data).encode('utf-8')))
Run Code Online (Sandbox Code Playgroud)
Basicallly它不是一个gzip文件,它只是代表字节瘪数据。
我只能找到这些参考资料,但不是我要找的(我认为前两个最相关):
我必须真正实现这个多行包装器java.util.zip
还是有一个不错的库?实际上,我什至不确定这些字节流是否跨库兼容,或者我是否只是试图混合和匹配错误的库。
Python中的步骤:
>>> '{"hello": "world"}'.encode('utf-8')
b'{"hello": "world"}'
>>> zlib.compress(b'{"hello": "world"}')
b'x\x9c\xabV\xcaH\xcd\xc9\xc9W\xb2RP*\xcf/\xcaIQ\xaa\x05\x009\x99\x06\x17'
>>> [int(i) for i in zlib.compress(b'{"hello": "world"}')]
[120, 156, 171, 86, 202, 72, 205, 201, 201, 87, 178, 82, 80, 42, 207, 47, 202, 73, 81, 170, 5, 0, 57, 153, 6, 23]
>>> import numpy
>>> [numpy.int8(i) for i in …
Run Code Online (Sandbox Code Playgroud) clojure ×2
apache-spark ×1
compression ×1
deflate ×1
docker ×1
gzip ×1
java ×1
kibana ×1
networking ×1