
elek/hadoop本仓库包含用于基本Hadoop集群的Docker镜像,支持多种配置加载机制,可灵活部署Hadoop组件(如YARN、HDFS等)。配置加载逻辑基于base-docker镜像实现,配置方法存储在/opt/configurer目录,可通过环境变量CONFIG_TYPE选择。更多示例配置、Ansible及docker-compose脚本可参考umbrella仓库。
CONFIG_TYPE=simple:使用简单默认配置及环境变量定义的配置CONFIG_TYPE=consul:从Consul键值存储加载配置文件,支持配置变更时自动重启通过以下模式设置配置变量:
NAME.EXTENSION_configkey=VALUE
EXTENSION:文件扩展名,需对应预定义转换类型(目前支持xml、yaml、properties、configuration、env、sh、conf、cfg)configkey:配置项键名示例:
CORE-SITE_fs.default.name: "hdfs://localhost:9000" HDFS-SITE_dfs_namenode_rpc-address: "localhost:9000" HBASE-SITE.XML_hbase_zookeeper_quorum: "localhost"
如需指定与扩展名不同的转换格式,可使用:
NAME.EXTENSION!FORMAT_configkey=VALUE
示例(Kafka server.properties使用cfg转换):
SERVER.CONF!CFG_zookeeper.address=zookeeper:2181
:分隔=分隔=分隔export关键字bigdata-docker项目的simple目录提供了使用简单配置的docker-compose示例。
通过CONFIG_TYPE=consul启用,基于elek/consul-launcher实现,从Consul键值存储下载配置文件,并通过consul-template监控配置变更实现自动重启。
CONSUL_PATH:配置文件根目录,默认值为conf,根目录可包含config.ini配置CONSUL_KEY(可选):子目录,若同时设置CONSUL_PATH和CONSUL_KEY,配置文件从$CONSUL_PATH/$CONSUL_KEY下载,config.ini从$CONSUL_PATH读取以下示例启动简单HDFS集群:
yamlversion: "2" services: namenode: image: elek/hadoop-hdfs-namenode:latest container_name: hdfs_namenode hostname: namenode volumes: - /tmp:/data ports: - 50070:50070 - 9870:9870 environment: HADOOP_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" HDFS-SITE.XML_dfs.namenode.rpc-address: "namenode:9000" HDFS-SITE.XML_dfs.replication: "1" HDFS-SITE.XML_dfs.permissions.superusergroup: "admin" HDFS-SITE.XML_dfs.namenode.name.dir: "/data/namenode" HDFS-SITE.XML_dfs.namenode.http-bind-host: "0.0.0.0" LOG4J.PROPERTIES_log4j.rootLogger: "INFO, stdout" LOG4J.PROPERTIES_log4j.appender.stdout: "org.apache.log4j.ConsoleAppender" LOG4J.PROPERTIES_log4j.appender.stdout.layout: "org.apache.log4j.PatternLayout" LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern: "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" datanode: image: elek/hadoop-hdfs-datanode:latest volumes: - /tmp:/data links: - namenode environment: HDFS-SITE.XML_dfs.namenode.rpc-address: "namenode:9000" HDFS-SITE.XML_dfs.replication: "1" HDFS-SITE.XML_dfs.permissions.superusergroup: "admin" HDFS-SITE.XML_dfs.namenode.http-bind-host: "0.0.0.0" LOG4J.PROPERTIES_log4j.rootLogger: "INFO, stdout" LOG4J.PROPERTIES_log4j.appender.stdout: "org.apache.log4j.ConsoleAppender" LOG4J.PROPERTIES_log4j.appender.stdout.layout: "org.apache.log4j.PatternLayout" LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern: "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" CORE-SITE.XML_fs.default.name: "hdfs://namenode:9000" CORE-SITE.XML_fs.defaultFS: "hdfs://namenode:9000"
bashdocker-compose run namenode hdfs namenode -format
bashdocker-compose up -d
bashdocker-compose scale datanode=3
latest:指向最新配置加载机制和最新稳定Apache版本testing:通常指向前沿开发快照或RC/alpha版本,预期可正常工作可通过branch.sh和localbuild.sh构建自定义版本:
bashexport DOCKER_TAG=3.0.0-alpha3-SNAPSHOT
bash./branch.sh http://localhost/apache-hadoop.tar.gz
bash./localbuild.sh
bashdocker run .... elek/image_name:$DOCKER_TAG
本地文件服务:若需提供本地tar文件,可启动简单HTTP服务器:
python3 -m http.serverpython -m SimpleHTTPServer



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务