小编Nik*_*yrh的帖子

具有docker容器的独立群集上的Spark SPARK_PUBLIC_DNS和SPARK_LOCAL_IP

到目前为止,我只在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作业,可能还运行从机本身.

我试过的事情:

  1. 根本没有配置SPARK_LOCAL_IP,slave绑定到容器的ip(如172.17.0.45),无法连接到master或driver,计算大部分时间仍然有效,但并不总是
  2. 绑定到0.0.0.0,奴隶与master交谈并建立一些连接但它死了,另一个奴隶出现并消失,他们继续像这样循环
  3. 绑定到主机ip,启动失败,因为在容器中看不到ip,但是当配置了端口转发时,其他人可以访问

我想知道为什么连接到从设备时没有使用配置的SPARK_PUBLIC_DNS?我以为SPARK_LOCAL_IP只会影响本地绑定但不会泄露给外部计算机.

https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/troubleshooting/connectivity_issues.html,他们指示"将SPARK_LOCAL_IP设置为驱动程序,主服务器和工作进程的集群可寻址主机名",这是唯一的选择吗?我会避免额外的DNS配置,只需使用ips配置计算机之间的流量.或者有一种简单的方法来实现这一目标吗?

编辑: 总结当前设置:

  • Master在Linux上运行(Windows上的VirtualBox虚拟机,具有桥接网络)
  • 驱动程序从其他Windows机器提交作业,效果很好
  • 用于启动从站的Docker镜像被分发为"已保存".tar.gz文件,已加载(curl xyz | gunzip | docker load)并在网络中的其他计算机上启动,此探针具有私有/公共ip配置

networking docker apache-spark

10
推荐指数
3
解决办法
1万
查看次数

在Clojure中构建匿名函数的映射

我只是在学习语言而且我有一个简单的问题.为什么这样做(构造{: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)

编辑:感谢很好的答案,显然我需要停止思考#lambdaPython相同.

clojure

5
推荐指数
2
解决办法
1266
查看次数

Kibana5,索引模式不包含以下任何字段类型:*

我已成功设置了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)

elasticsearch kibana

5
推荐指数
1
解决办法
6850
查看次数

在 Clojure 中解压 zlib 流

我有一个由zlib.compressPython创建的二进制文件,是否有一种简单的方法可以在 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)

java compression gzip clojure deflate

5
推荐指数
1
解决办法
1068
查看次数