From 23aec9aee466e22a65253585682832809cbfb9de Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 30 Jun 2025 10:08:02 +0800 Subject: [PATCH 1/3] Add `image-info` and `README` --- .../accumulo/2.1.3/24.03-lts-sp1/Dockerfile | 37 ++++--- .../2.1.3/24.03-lts-sp1/entrypoint.sh | 23 +++++ .../hadoop/capacity-scheduler.xml | 65 +++++++++++++ .../2.1.3/24.03-lts-sp1/hadoop/core-site.xml | 36 +++++++ .../2.1.3/24.03-lts-sp1/hadoop/hadoop-env.sh | 8 ++ .../2.1.3/24.03-lts-sp1/hadoop/hdfs-site.xml | 24 +++++ .../24.03-lts-sp1/hadoop/mapred-site.xml | 28 ++++++ .../2.1.3/24.03-lts-sp1/hadoop/yarn-site.xml | 61 ++++++++++++ .../properties/accumulo.properties | 39 ++++++++ .../properties/log4j-monitor.properties | 34 +++++++ .../properties/log4j-service.properties | 49 ++++++++++ .../2.1.3/24.03-lts-sp1/ssh/ssh_config | 19 ++++ .../2.1.3/24.03-lts-sp1/ssh/sshd_config | 18 ++++ Bigdata/accumulo/README.md | 70 +++++++++++++ Bigdata/accumulo/doc/image-info.yml | 92 ++++++++++++++++++ Bigdata/accumulo/doc/picture/logo.png | Bin 0 -> 11427 bytes Bigdata/atlas/2.4.0/24.03-lts-sp1/Dockerfile | 29 ++++-- .../2.4.0/24.03-lts-sp1/atlas_config.patch | 64 ++++++++++++ Bigdata/atlas/README.md | 54 ++++++++++ Bigdata/atlas/doc/image-info.yml | 67 +++++++++++++ Bigdata/atlas/doc/picture/logo.png | Bin 0 -> 21805 bytes Bigdata/avro/README.md | 32 ++++++ Bigdata/avro/doc/image-info.yml | 37 +++++++ Bigdata/avro/doc/picture/logo.png | Bin 0 -> 32624 bytes Bigdata/consul/README.md | 32 ++++++ Bigdata/consul/doc/image-info.yml | 65 +++++++++++++ Bigdata/consul/doc/picture/logo.jpg | Bin 0 -> 23012 bytes Bigdata/doris/2.1.9/doc/image-info.yml | 34 +++++++ Bigdata/doris/README.md | 29 ++++++ Bigdata/hadoop/3.4.1/24.03-lts-sp1/Dockerfile | 21 ++-- .../hadoop/3.4.1/24.03-lts-sp1/entrypoint.sh | 16 +++ .../hadoop/capacity-scheduler.xml | 65 +++++++++++++ .../3.4.1/24.03-lts-sp1/hadoop/core-site.xml | 36 +++++++ .../3.4.1/24.03-lts-sp1/hadoop/hadoop-env.sh | 8 ++ .../3.4.1/24.03-lts-sp1/hadoop/hdfs-site.xml | 24 +++++ .../24.03-lts-sp1/hadoop/mapred-site.xml | 28 ++++++ .../3.4.1/24.03-lts-sp1/hadoop/yarn-site.xml | 61 ++++++++++++ .../hadoop/3.4.1/24.03-lts-sp1/ssh/ssh_config | 19 ++++ .../3.4.1/24.03-lts-sp1/ssh/sshd_config | 18 ++++ Bigdata/hadoop/README.md | 53 ++++++++++ Bigdata/hadoop/doc/image-info.yml | 70 +++++++++++++ Bigdata/hadoop/doc/picture/logo.jpg | Bin 0 -> 16389 bytes 42 files changed, 1439 insertions(+), 26 deletions(-) create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/entrypoint.sh create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/capacity-scheduler.xml create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/core-site.xml create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hadoop-env.sh create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hdfs-site.xml create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/mapred-site.xml create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/yarn-site.xml create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/accumulo.properties create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-monitor.properties create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-service.properties create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/ssh_config create mode 100644 Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/sshd_config create mode 100644 Bigdata/accumulo/README.md create mode 100644 Bigdata/accumulo/doc/image-info.yml create mode 100644 Bigdata/accumulo/doc/picture/logo.png create mode 100644 Bigdata/atlas/2.4.0/24.03-lts-sp1/atlas_config.patch create mode 100644 Bigdata/atlas/README.md create mode 100644 Bigdata/atlas/doc/image-info.yml create mode 100644 Bigdata/atlas/doc/picture/logo.png create mode 100644 Bigdata/avro/README.md create mode 100644 Bigdata/avro/doc/image-info.yml create mode 100644 Bigdata/avro/doc/picture/logo.png create mode 100644 Bigdata/consul/README.md create mode 100644 Bigdata/consul/doc/image-info.yml create mode 100644 Bigdata/consul/doc/picture/logo.jpg create mode 100644 Bigdata/doris/2.1.9/doc/image-info.yml create mode 100644 Bigdata/doris/README.md create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/entrypoint.sh create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/capacity-scheduler.xml create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/core-site.xml create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hadoop-env.sh create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hdfs-site.xml create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/mapred-site.xml create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/yarn-site.xml create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/ssh_config create mode 100644 Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/sshd_config create mode 100644 Bigdata/hadoop/README.md create mode 100644 Bigdata/hadoop/doc/image-info.yml create mode 100644 Bigdata/hadoop/doc/picture/logo.jpg diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile index 9842eb85..9411ed32 100644 --- a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile @@ -3,18 +3,22 @@ FROM $BASE ARG VERSION=2.1.3 -# install accumulo -RUN curl -fSL -o accumulo.tar.gz https://dlcdn.apache.org/accumulo/${VERSION}/accumulo-${VERSION}-bin.tar.gz; \ - mkdir -p /usr/local/accumulo && \ - tar -zxf accumulo.tar.gz -C /usr/local/accumulo --strip-components=1 && \ - rm -rf accumulo.tar.gz -ENV PATH=$PATH:/usr/local/accumulo/bin +# install -y openjdk +COPY ssh/* /etc/ssh/ +RUN yum install -y java-11-openjdk-devel openssh openssh-clients sudo hostname && \ + yum clean all && \ + ssh-keygen -A && ssh-keygen -t ed25519 -P '' -f /root/.ssh/id_ed25519 && \ + cat /root/.ssh/id_ed25519.pub > /root/.ssh/authorized_keys && \ + chmod 0400 /root/.ssh/authorized_keys +ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk # install zookeeper RUN curl -fSL -o zookeeper.tar.gz https://archive.apache.org/dist/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz; \ mkdir -p /usr/local/zookeeper && \ tar -zxf zookeeper.tar.gz -C /usr/local/zookeeper --strip-components=1 && \ - rm -rf zookeeper.tar.gz + rm -rf zookeeper.tar.gz && \ + cd /usr/local/zookeeper/conf && \ + touch zoo.cfg && echo -e 'tickTime=2000\ndataDir=/var/lib/zookeeper\nclientPort=2181\nadmin.serverPort=8081' > zoo.cfg ENV PATH=$PATH:/usr/local/zookeeper/bin ENV ZOOKEEPER_HOME=/usr/local/zookeeper/ @@ -26,10 +30,19 @@ RUN curl -fSL -o hadoop.tar.gz https://dlcdn.apache.org/hadoop/common/hadoop-${H rm -rf hadoop.tar.gz ENV PATH=$PATH:/usr/local/hadoop/bin ENV HADOOP_HOME=/usr/local/hadoop/ +COPY hadoop/* $HADOOP_HOME/etc/hadoop/ -# install -y openjdk -RUN yum install -y java-17-openjdk-devel hostname && \ - yum clean all -ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk +# install accumulo +RUN curl -fSL -o accumulo.tar.gz https://dlcdn.apache.org/accumulo/${VERSION}/accumulo-${VERSION}-bin.tar.gz; \ + mkdir -p /usr/local/accumulo && \ + tar -zxf accumulo.tar.gz -C /usr/local/accumulo --strip-components=1 && \ + rm -rf accumulo.tar.gz +ENV PATH=$PATH:/usr/local/accumulo/bin +ENV ACCUMULO_HOME=/usr/local/accumulo/ +COPY properties/* $ACCUMULO_HOME/conf/ + +COPY entrypoint.sh / +RUN chmod +x /entrypoint.sh -CMD ["accumulo", "version"] \ No newline at end of file +ENTRYPOINT ["/entrypoint.sh"] +CMD ["init", "--upload-accumulo-props"] \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/entrypoint.sh b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/entrypoint.sh new file mode 100644 index 00000000..de9cb3b8 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Start SSH service +/usr/sbin/sshd + +# Format HDFS +echo "Starting Zookeeper..." +"$ZOOKEEPER_HOME"/bin/zkServer.sh start + +# Format HDFS +echo "Formatting HDFS NameNode..." +hdfs namenode -format + +# Run Hadoop +echo "Starting Hadoop..." +$HADOOP_HOME/sbin/start-all.sh start +echo "Start History Server" +$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh --config $HADOOP_HOME/etc/hadoop start historyserver + +# Run accumulo with CMD +accumulo "$@" + +tail -f /dev/null \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/capacity-scheduler.xml b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/capacity-scheduler.xml new file mode 100644 index 00000000..5eb4cddb --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/capacity-scheduler.xml @@ -0,0 +1,65 @@ + + + + + + yarn.scheduler.capacity.default.minimum-user-limit-percent + 100 + + + yarn.scheduler.capacity.maximum-am-resource-percent + 0.5 + + + yarn.scheduler.capacity.maximum-applications + 10000 + + + yarn.scheduler.capacity.node-locality-delay + 40 + + + yarn.scheduler.capacity.resource-calculator + org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator + + + yarn.scheduler.capacity.root.capacity + 100 + + + yarn.scheduler.capacity.root.default.capacity + 100 + + + yarn.scheduler.capacity.root.default.maximum-am-resource-percent + 0.5 + + + yarn.scheduler.capacity.root.default.maximum-capacity + 100 + + + yarn.scheduler.capacity.root.default.state + RUNNING + + + yarn.scheduler.capacity.root.default.user-limit-factor + 1 + + + yarn.scheduler.capacity.root.queues + default + + \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/core-site.xml b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/core-site.xml new file mode 100644 index 00000000..1821f544 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/core-site.xml @@ -0,0 +1,36 @@ + + + + + + + + + hadoop.tmp.dir + /data/hadoop + + + fs.defaultFS + hdfs://localhost:8020 + + + hadoop.http.staticuser.user + root + + + fs.hdfs.impl + org.apache.hadoop.hdfs.DistributedFileSystem + + \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hadoop-env.sh b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hadoop-env.sh new file mode 100644 index 00000000..3c57ab9c --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hadoop-env.sh @@ -0,0 +1,8 @@ + +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk +export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)} +export HDFS_NAMENODE_USER="root" +export HDFS_DATANODE_USER="root" +export HDFS_SECONDARYNAMENODE_USER="root" +export YARN_RESOURCEMANAGER_USER="root" +export YARN_NODEMANAGER_USER="root" \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hdfs-site.xml b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hdfs-site.xml new file mode 100644 index 00000000..73d9f71a --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/hdfs-site.xml @@ -0,0 +1,24 @@ + + + + + + + + + dfs.replication + 1 + + \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/mapred-site.xml b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/mapred-site.xml new file mode 100644 index 00000000..1a9adfda --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/mapred-site.xml @@ -0,0 +1,28 @@ + + + + + + + + + mapreduce.framework.name + yarn + + + mapreduce.application.classpath + $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/* + + \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/yarn-site.xml b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/yarn-site.xml new file mode 100644 index 00000000..5957ce2e --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/hadoop/yarn-site.xml @@ -0,0 +1,61 @@ + + + + + + yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage + 98 + + + yarn.nodemanager.aux-services + mapreduce_shuffle + + + yarn.nodemanager.env-whitelist + JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME + + + yarn.resourcemanager.scheduler.class + org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler + + + yarn.log-aggregation-enable + true + + + yarn.log.dir + /data/hadoop + + + yarn.log.server.url + http://localhost:19888/jobhistory/logs + + + yarn.scheduler.minimum-allocation-vcores + 1 + + + yarn.scheduler.maximum-allocation-vcores + 1 + + + yarn.scheduler.minimum-allocation-mb + 256 + + + yarn.scheduler.maximum-allocation-mb + 4096 + + \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/accumulo.properties b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/accumulo.properties new file mode 100644 index 00000000..2ba912a5 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/accumulo.properties @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is the main configuration file for Apache Accumulo. Available configuration properties can be +# found in the Accumulo documentation on the Accumulo project website (https://accumulo.apache.org/) +# Link for Accumulo 2.0: https://accumulo.apache.org/docs/2.0/administration/properties + +## Sets location in HDFS where Accumulo will store data +instance.volumes=hdfs://localhost:8020/accumulo + +## Sets location of Zookeepers +instance.zookeeper.host=localhost:2181 + +## Change secret before initialization. All Accumulo servers must have same secret +instance.secret=DEFAULT + +## Set to false if 'accumulo-util build-native' fails +tserver.memory.maps.native.enabled=true + +## Trace user +trace.user=root + +## Trace password +trace.password=secret + +## Search for available port if default is unavailable +tserver.port.search=true diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-monitor.properties b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-monitor.properties new file mode 100644 index 00000000..2057ede4 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-monitor.properties @@ -0,0 +1,34 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## Log4j 1.2 file that configures logging for Accumulo Monitor +## The system properties referenced below are configured by accumulo-env.sh + +## Define a console appender +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Target=System.out +log4j.appender.console.Threshold=ALL +log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%-8c{2}] %-5p: %m%n +log4j.appender.console.layout=org.apache.log4j.PatternLayout + +## Define an appender for the Accumulo Monitor to log to its own web GUI +log4j.appender.gui=org.apache.accumulo.server.monitor.LogService +log4j.appender.gui.Threshold=WARN + +## Append monitor logs to its own web GUI +log4j.logger.org.apache.accumulo=INHERITED, gui + +## Append most logs to file +log4j.rootLogger=INFO, console diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-service.properties b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-service.properties new file mode 100644 index 00000000..45880410 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/properties/log4j-service.properties @@ -0,0 +1,49 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## Log4j 1.2 file that configures logging for all Accumulo services (Master, TabletServer, GC, and Tracer) except Monitor +## The system properties referenced below are configured by accumulo-env.sh + +## Define a console appender +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Target=System.out +log4j.appender.console.Threshold=ALL +log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%-8c{2}] %-5p: %m%n +log4j.appender.console.layout=org.apache.log4j.PatternLayout + +## Define an appender to send important logs to the the primary Accumulo Monitor +## The primary monitor is the one currently holding a shared lock in ZooKeeper, +## and is typically the one that started first. +log4j.appender.monitor=org.apache.accumulo.monitor.util.AccumuloMonitorAppender +log4j.appender.monitor.Threshold=WARN + +## Change this log level from OFF to one of the following to enable audit logging: +## INFO +## enables audit logging (inherit appenders from root logger) +## INFO, audit +## enables audit logging using the audit log appender +## (requires audit log file appender above to be uncommented) +log4j.logger.org.apache.accumulo.audit=OFF + +## Append logs to the primary Accumulo Monitor +log4j.logger.org.apache.accumulo=INHERITED, monitor + +## Constrain some particularly spammy loggers +log4j.logger.org.apache.accumulo.core.file.rfile.bcfile=INFO +log4j.logger.org.mortbay.log=WARN +log4j.logger.org.apache.zookeeper=ERROR + +## Append most logs to console +log4j.rootLogger=INFO, console diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/ssh_config b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/ssh_config new file mode 100644 index 00000000..79611d11 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/ssh_config @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +Host * + StrictHostKeyChecking no \ No newline at end of file diff --git a/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/sshd_config b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/sshd_config new file mode 100644 index 00000000..8a7c77b7 --- /dev/null +++ b/Bigdata/accumulo/2.1.3/24.03-lts-sp1/ssh/sshd_config @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +ListenAddress 0.0.0.0 \ No newline at end of file diff --git a/Bigdata/accumulo/README.md b/Bigdata/accumulo/README.md new file mode 100644 index 00000000..04d110ac --- /dev/null +++ b/Bigdata/accumulo/README.md @@ -0,0 +1,70 @@ +# Quick reference + +- The official accumulo docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# Accumulo | openEuler +Current accumulo docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Apache Accumulo is a sorted, distributed key/value store that provides robust, scalable data storage and retrieval. With Apache Accumulo, users can store and manage large data sets across a cluster. + +Learn more on [accumulo website](https://accumulo.apache.org/). + +# Supported tags and respective Dockerfile links +The tag of each accumulo docker image is consist of the version of accumulo and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[2.1.3-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile)| Apache accumulo 2.1.3 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +Deploy a accumulo instance with pre-installed hadoop and zookeeper components by following command: +```bash +# Start Accumulo +docker run -it \ + --name accumulo \ + openeuler/accumulo:latest +``` +The following message indicates that the accumulo is ready : +``` +************************************************************/ +Starting Hadoop... +Starting namenodes on [localhost] +localhost: Warning: Permanently added 'localhost' (ED25519) to the list of known hosts. +Starting datanodes +Starting secondary namenodes [183cfa448d9e] +183cfa448d9e: Warning: Permanently added '183cfa448d9e' (ED25519) to the list of known hosts. +2025-06-27 09:44:28,879 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable +Starting resourcemanager +Starting nodemanagers +Start History Server +WARNING: Use of this script to start the MR JobHistory daemon is deprecated. +WARNING: Attempting to execute replacement "mapred --daemon start" instead. +2025-06-27T09:44:36,603 [conf.SiteConfiguration] INFO : Found Accumulo configuration on classpath at /usr/local/accumulo/conf/accumulo.properties +2025-06-27T09:44:36,758 [util.NativeCodeLoader] WARN : Unable to load native-hadoop library for your platform... using builtin-java classes where applicable +2025-06-27T09:44:37,033 [fs.VolumeManagerImpl] WARN : dfs.datanode.synconclose set to false in hdfs-site.xml: data loss is possible on hard system reset or power loss +2025-06-27T09:44:37,033 [init.Initialize] INFO : Hadoop Filesystem is hdfs://localhost:8020 +2025-06-27T09:44:37,033 [init.Initialize] INFO : Accumulo data dirs are [[hdfs://localhost:8020/accumulo]] +2025-06-27T09:44:37,033 [init.Initialize] INFO : Zookeeper server is localhost:2181 +2025-06-27T09:44:37,033 [init.Initialize] INFO : Checking if Zookeeper is available. If this hangs, then you need to make sure zookeeper is running + + +Warning!!! Your instance secret is still set to the default, this is not secure. We highly recommend you change it. + + +You can change the instance secret in accumulo by using: + bin/accumulo org.apache.accumulo.server.util.ChangeSecret +You will also need to edit your secret in your configuration file by adding the property instance.secret to your accumulo.properties. Without this accumulo will not operate correctly +Instance name : + +``` + +To stop and remove the container, use these commands. +``` +docker stop accumulo +docker rm accumulo +``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Bigdata/accumulo/doc/image-info.yml b/Bigdata/accumulo/doc/image-info.yml new file mode 100644 index 00000000..231bdd2d --- /dev/null +++ b/Bigdata/accumulo/doc/image-info.yml @@ -0,0 +1,92 @@ +name: accumulo +category: bigdata +description: Apache Accumulo 是一个排序的分布式键/值存储,提供强大且可扩展的数据存储和检索功能。借助 Apache Accumulo,用户可以跨集群存储和管理大型数据集。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + accumulo镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[2.1.3-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/accumulo/2.1.3/24.03-lts-sp1/Dockerfile)| Apache accumulo 2.1.3 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/accumulo:{Tag} + ``` + +usage: | + - 启动容器 + + `openeuler/accumulo`镜像预装了hadoop、zookeeper,用户可以无需依赖其他容器,直接启动accumulo实例: + + ```bash + docker run -it \ + --name accumulo \ + openeuler/accumulo:{Tag} + ``` + + 出现如下信息则说明accumulo已经部署成功: + ``` + ************************************************************/ + Starting Hadoop... + Starting namenodes on [localhost] + localhost: Warning: Permanently added 'localhost' (ED25519) to the list of known hosts. + Starting datanodes + Starting secondary namenodes [183cfa448d9e] + 183cfa448d9e: Warning: Permanently added '183cfa448d9e' (ED25519) to the list of known hosts. + 2025-06-27 09:44:28,879 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable + Starting resourcemanager + Starting nodemanagers + Start History Server + WARNING: Use of this script to start the MR JobHistory daemon is deprecated. + WARNING: Attempting to execute replacement "mapred --daemon start" instead. + 2025-06-27T09:44:36,603 [conf.SiteConfiguration] INFO : Found Accumulo configuration on classpath at /usr/local/accumulo/conf/accumulo.properties + 2025-06-27T09:44:36,758 [util.NativeCodeLoader] WARN : Unable to load native-hadoop library for your platform... using builtin-java classes where applicable + 2025-06-27T09:44:37,033 [fs.VolumeManagerImpl] WARN : dfs.datanode.synconclose set to false in hdfs-site.xml: data loss is possible on hard system reset or power loss + 2025-06-27T09:44:37,033 [init.Initialize] INFO : Hadoop Filesystem is hdfs://localhost:8020 + 2025-06-27T09:44:37,033 [init.Initialize] INFO : Accumulo data dirs are [[hdfs://localhost:8020/accumulo]] + 2025-06-27T09:44:37,033 [init.Initialize] INFO : Zookeeper server is localhost:2181 + 2025-06-27T09:44:37,033 [init.Initialize] INFO : Checking if Zookeeper is available. If this hangs, then you need to make sure zookeeper is running + + + Warning!!! Your instance secret is still set to the default, this is not secure. We highly recommend you change it. + + + You can change the instance secret in accumulo by using: + bin/accumulo org.apache.accumulo.server.util.ChangeSecret + You will also need to edit your secret in your configuration file by adding the property instance.secret to your accumulo.properties. Without this accumulo will not operate correctly + Instance name : + + ``` + + - 容器交互 + + 容器启动默认执行`accumulo init --upload-accumulo-props`, 用户可根据需求通过CMD改变执行的命令,或启动时重新设置entrypoint,进入容器后进行交互: + ```bash + docker run -it \ + --name accumulo \ + --entrypoint=bash \ + openeuler/accumulo:{Tag} + ``` + + - 停止服务 + + 使用如下命令终止容器: + ``` + docker stop accumulo + docker rm accumulo + ``` + +license: Apache-2.0 license +similar_packages: + - Apache HBase: 基于 Hadoop 的分布式、可扩展的 NoSQL 数据库,适合处理大规模、实时随机读写操作。 + - Cassandra: 由 Apache 提供支持的分布式 NoSQL 数据库,用于处理大量数据,具有高可用性和无单点故障。 +dependency: + - openjdk + - hadoop + - zookeeper \ No newline at end of file diff --git a/Bigdata/accumulo/doc/picture/logo.png b/Bigdata/accumulo/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0f6b434571b37da9a86d9d38d09297b4363fac GIT binary patch literal 11427 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 /atlas-server/conf/atlas-env.sh && \ + mkdir -p /atlas-server/hbase/conf/ && \ + cp /atlas/dev-support/atlas-docker/scripts/hbase-site.xml /atlas-server/hbase/conf/ && \ + rm -rf /atlas + +COPY atlas_config.patch /atlas-server/ +WORKDIR /atlas-server +RUN yum install -y patch && \ + patch -p1 < atlas_config.patch -CMD ["bash"] \ No newline at end of file +EXPOSE 21000 \ No newline at end of file diff --git a/Bigdata/atlas/2.4.0/24.03-lts-sp1/atlas_config.patch b/Bigdata/atlas/2.4.0/24.03-lts-sp1/atlas_config.patch new file mode 100644 index 00000000..94e0341c --- /dev/null +++ b/Bigdata/atlas/2.4.0/24.03-lts-sp1/atlas_config.patch @@ -0,0 +1,64 @@ +--- a/bin/atlas_config.py 2025-06-28 10:16:09.154265752 +0000 ++++ b/bin/atlas_config.py 2025-06-28 10:00:31.479221040 +0000 +@@ -529,15 +529,17 @@ + + def wait_for_startup(confdir, wait): + count = 0 ++ started = False + host = get_atlas_url_host(confdir) + port = get_atlas_url_port(confdir) +- while True: ++ pid_file = pidFile(atlasDir()) ++ while not started: + try: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.settimeout(1) + s.connect((host, int(port))) + s.close() +- break ++ started = True + except Exception as e: + # Wait for 1 sec before next ping + sys.stdout.write('.') +@@ -546,6 +548,14 @@ + + if count > wait: + s.close() ++ sys.stdout.write('\nAtlas Web-UI startup timed out! But, wait for it...') ++ sys.stdout.flush() ++ break ++ ++ if not os.path.exists(pid_file): ++ sys.stdout.write('\nApache Atlas startup failed!\nCheck logs: /apache-atlas/logs/application.log') ++ sys.stdout.flush() ++ exit() + break + + count = count + 1 +@@ -584,14 +594,14 @@ + + if zk_url is None: + if port is None: +- cmd = [os.path.join(dir, solrScript), action] ++ cmd = [os.path.join(dir, solrScript), action, '-force'] + else: +- cmd = [os.path.join(dir, solrScript), action, '-p', str(port)] ++ cmd = [os.path.join(dir, solrScript), action, '-force', '-p', str(port)] + else: + if port is None: +- cmd = [os.path.join(dir, solrScript), action, '-z', zk_url] ++ cmd = [os.path.join(dir, solrScript), action, '-force', '-z', zk_url] + else: +- cmd = [os.path.join(dir, solrScript), action, '-z', zk_url, '-p', port] ++ cmd = [os.path.join(dir, solrScript), action, '-force', '-z', zk_url, '-p', port] + + if homedir is not None: + if not os.path.exists(homedir) : +@@ -614,7 +624,7 @@ + if IS_WINDOWS: + solrScript = "solr.cmd" + +- cmd = [os.path.join(dir, solrScript), 'create', '-c', index, '-d', confdir, '-shards', solrShards(), '-replicationFactor', solrReplicationFactor()] ++ cmd = [os.path.join(dir, solrScript), 'create', '-c', index, '-d', confdir, '-shards', solrShards(), '-replicationFactor', solrReplicationFactor(), '-force'] + + return runProcess(cmd, logdir, False, wait) diff --git a/Bigdata/atlas/README.md b/Bigdata/atlas/README.md new file mode 100644 index 00000000..452e9cbf --- /dev/null +++ b/Bigdata/atlas/README.md @@ -0,0 +1,54 @@ +# Quick reference + +- The official atlas docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# atlas | openEuler +Current atlas docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Atlas is a scalable and extensible set of core foundational governance services – enabling enterprises to effectively and efficiently meet their compliance requirements within Hadoop and allows integration with the whole enterprise data ecosystem. + +Apache Atlas provides open metadata management and governance capabilities for organizations to build a catalog of their data assets, classify and govern these assets and provide collaboration capabilities around these data assets for data scientists, analysts and the data governance team. + +Learn more on [atlas website](https://atlas.apache.org/). + +# Supported tags and respective Dockerfile links +The tag of each atlas docker image is consist of the version of atlas and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[2.4.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/atlas/2.4.0/24.03-lts-sp1/Dockerfile)| Apache Atlas 2.4.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +Start a atlas instance by following command: +```bash +docker run -it \ + --name atlas \ + -p 21000:21000 \ + openeuler/atlas:latest +``` + +Running Apache Atlas with Local Apache HBase & Apache Solr +``` +bin/atlas_start.py +``` + +To verify if Apache Atlas server is up and running, run curl command as shown below: +``` +curl -u {username}:{password} http://localhost:21000/api/atlas/admin/version +``` +This will return result like +``` +{"Description":"Metadata Management and Data Governance Platform over Hadoop","Version":"2.2.0","Name":"apache-atlas"} +``` + +Access Apache Atlas UI using a browser: `http://localhost:21000`, the default credentials: `admin / admin`. + +To stop Apache Atlas, run following command: +``` +bin/atlas_stop.py +``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Bigdata/atlas/doc/image-info.yml b/Bigdata/atlas/doc/image-info.yml new file mode 100644 index 00000000..33f64a86 --- /dev/null +++ b/Bigdata/atlas/doc/image-info.yml @@ -0,0 +1,67 @@ +name: atlas +category: bigdata +description: Atlas 是一套可扩展且易于扩展的核心基础治理服务,使企业能够有效且高效地满足 Hadoop 内部的合规性要求,并允许与整个企业数据生态系统集成。Apache Atlas 为组织提供开放的元数据管理和治理功能,用于构建其数据资产目录、对这些资产进行分类和管理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作能力。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + atlas镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[2.4.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/atlas/2.4.0/24.03-lts-sp1/Dockerfile)| Apache Atlas 2.4.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/atlas:{Tag} + ``` + +usage: | + - 启动容器 + + ```bash + docker run -it \ + --name atlas \ + -p 21000:21000 \ + openeuler/atlas:{Tag} + ``` + + 使用容器内的Apache HBase和Apache Solr运行Apache Atlas: + ``` + export MANAGE_LOCAL_HBASE=true + export MANAGE_LOCAL_SOLR=true + bin/atlas_start.py + ``` + + 使用如下命令验证Atlas是否已经正常运行: + ``` + # 运行命令 + curl -u {username}:{password} http://localhost:21000/api/atlas/admin/version + + # 返回如下信息则正常 + {"Description":"Metadata Management and Data Governance Platform over Hadoop","Version":"2.2.0","Name":"apache-atlas"} + ``` + 默认登录用户名`{username}:{password}`为:`admin:admin` + + - webUI访问: + + 浏览器地址栏输入:`http://localhost:21000`来可视化管理Altas, 默认登录用户名/密码:`admin/admin`。 + + - 停止服务 + + 使用如下命令停止Atlas服务: + ``` + bin/atlas_stop.py + ``` + +license: Apache-2.0 license +similar_packages: + - Apache HBase: 基于 Hadoop 的分布式、可扩展的 NoSQL 数据库,适合处理大规模、实时随机读写操作。 + - Cassandra: 由 Apache 提供支持的分布式 NoSQL 数据库,用于处理大量数据,具有高可用性和无单点故障。 +dependency: + - openjdk + - hadoop + - zookeeper \ No newline at end of file diff --git a/Bigdata/atlas/doc/picture/logo.png b/Bigdata/atlas/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc7392f681b5c6208fd6a0259d3675edacca37f GIT binary patch literal 21805 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 literal 0 HcmV?d00001 diff --git a/Bigdata/avro/README.md b/Bigdata/avro/README.md new file mode 100644 index 00000000..43b58342 --- /dev/null +++ b/Bigdata/avro/README.md @@ -0,0 +1,32 @@ +# Quick reference + +- The official avro docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# avro | openEuler +Current avro docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Apache Avro is the leading serialization format for record data, and first choice for streaming data pipelines. + +Learn more on [avro website](https://avro.apache.org/). + +# Supported tags and respective Dockerfile links +The tag of each avro docker image is consist of the version of avro and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[1.12.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/avro/1.12.0/24.03-lts-sp1/Dockerfile)| Apache Avro 1.12.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +Avro containers should be used as a devel environment, start a avro instance by following command: +```bash +docker run -it \ + --name avro \ + openeuler/avro:latest +``` + +Users can develope their projects based on avro. + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Bigdata/avro/doc/image-info.yml b/Bigdata/avro/doc/image-info.yml new file mode 100644 index 00000000..cc628ebb --- /dev/null +++ b/Bigdata/avro/doc/image-info.yml @@ -0,0 +1,37 @@ +name: avro +category: bigdata +description: Apache Avro 是记录数据的领先序列化格式,也是流数据管道的首选。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + avro镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[1.12.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/avro/1.12.0/24.03-lts-sp1/Dockerfile)| Apache Asvro 1.12.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/avro:{Tag} + ``` + +usage: | + - 启动容器 + + ```bash + docker run -it \ + --name avro \ + openeuler/avro:{Tag} + ``` + 用户可以`avro`容器为基础环境,开发基于Avro的项目。 + +license: Apache-2.0 license +similar_packages: + - Thrift: 由 Facebook 开发,是一个跨语言的服务框架,包含数据序列化和远程过程调用(RPC)功能。 +dependency: + - openjdk + - python \ No newline at end of file diff --git a/Bigdata/avro/doc/picture/logo.png b/Bigdata/avro/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..531d33865fe6517a6764340a6f78d279f4b1f282 GIT binary patch literal 32624 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
  • UL!NwKqf(r(fU?> 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 literal 0 HcmV?d00001 diff --git a/Bigdata/consul/README.md b/Bigdata/consul/README.md new file mode 100644 index 00000000..b79ea609 --- /dev/null +++ b/Bigdata/consul/README.md @@ -0,0 +1,32 @@ +# Quick reference + +- The official consul docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# Consul | openEuler +Current consul docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure. + +Learn more on [consul website](https://www.consul.io/). + +# Supported tags and respective Dockerfile links +The tag of each consul docker image is consist of the version of consul and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[1.20.5-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/consul/1.20.5/24.03-lts-sp1/Dockerfile)| Consul 1.20.5 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +Start a consul instance by following command: +```bash +docker run -it \ + -p 8500:8500 \ + openeuler/consul:latest + {command} +``` +Please replace `{command}` by your requirements. + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Bigdata/consul/doc/image-info.yml b/Bigdata/consul/doc/image-info.yml new file mode 100644 index 00000000..234057e1 --- /dev/null +++ b/Bigdata/consul/doc/image-info.yml @@ -0,0 +1,65 @@ +name: consul +category: bigdata +description: Consul 是一种分布式、高可用性和数据中心感知的解决方案,用于跨动态分布式基础设施连接和配置应用程序。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + consul镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[1.20.5-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/consul/1.20.5/24.03-lts-sp1/Dockerfile)| Consul 1.20.5 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/consul:{Tag} + ``` + +usage: | + - 启动容器 + + ```bash + docker run -it \ + --name my-consul \ + -p 8500:8500 \ + openeuler/consul:{Tag} + {command} + ``` + + 用户可根据自身需求替换`{command}`,可选: + ``` + Usage: consul [--version] [--help] [] + + Available commands are: + acl Interact with Consul's ACLs + agent Runs a Consul agent + catalog Interact with the catalog + config Interact with Consul's Centralized Configurations + connect Interact with Consul Connect + debug Records a debugging archive for operators + event Fire a new event + exec Executes a command on Consul nodes + force-leave Forces a member of the cluster to enter the "left" state + info Provides debugging information for operators. + intention Interact with Connect service intentions + join Tell Consul agent to join cluster + keygen Generates a new encryption key + ... + ``` + + - 访问容器 + + ```bash + docker exec -it my-consul /bin/bash + ``` + 进入容器即可修改相关配置,进行开发调试,参考[developer.hashicorp.com](https://developer.hashicorp.com/consul) + +license: Business Source License 1.1 +similar_packages: + - N/A +dependency: + - golang \ No newline at end of file diff --git a/Bigdata/consul/doc/picture/logo.jpg b/Bigdata/consul/doc/picture/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea9ce1c3a18e5ffa86e0c14256302e8d8a194fa2 GIT binary patch literal 23012 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 a=wJ$&%C /root/.ssh/authorized_keys && \ + chmod 0400 /root/.ssh/authorized_keys && \ + chmod +x /entrypoint.sh + RUN curl -fSL -o hadoop.tar.gz https://dlcdn.apache.org/hadoop/common/hadoop-${VERSION}/hadoop-${VERSION}.tar.gz; \ mkdir -p /usr/local/hadoop && \ tar -zxf hadoop.tar.gz -C /usr/local/hadoop --strip-components=1 && \ rm -rf hadoop.tar.gz - ENV PATH=$PATH:/usr/local/hadoop/bin +ENV HADOOP_HOME=/usr/local/hadoop +COPY hadoop/* $HADOOP_HOME/etc/hadoop/ -RUN yum install -y java-11-openjdk-devel && \ - yum clean all - -ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk - -ENTRYPOINT ["hadoop", "version"] \ No newline at end of file +EXPOSE 9870 8088 19888 50070 50075 50010 50020 50090 +ENTRYPOINT [ "/entrypoint.sh" ] +CMD [ "start" ] \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/entrypoint.sh b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/entrypoint.sh new file mode 100644 index 00000000..8f5400ad --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Start SSH service +/usr/sbin/sshd + +# Format HDFS +echo "Formatting HDFS NameNode..." +hdfs namenode -format + +# Run Hadoop with CMD arguments +$HADOOP_HOME/sbin/start-all.sh "$@" + +echo "Start History Server" +$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh --config $HADOOP_HOME/etc/hadoop start historyserver + +tail -f /dev/null \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/capacity-scheduler.xml b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/capacity-scheduler.xml new file mode 100644 index 00000000..5eb4cddb --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/capacity-scheduler.xml @@ -0,0 +1,65 @@ + + + + + + yarn.scheduler.capacity.default.minimum-user-limit-percent + 100 + + + yarn.scheduler.capacity.maximum-am-resource-percent + 0.5 + + + yarn.scheduler.capacity.maximum-applications + 10000 + + + yarn.scheduler.capacity.node-locality-delay + 40 + + + yarn.scheduler.capacity.resource-calculator + org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator + + + yarn.scheduler.capacity.root.capacity + 100 + + + yarn.scheduler.capacity.root.default.capacity + 100 + + + yarn.scheduler.capacity.root.default.maximum-am-resource-percent + 0.5 + + + yarn.scheduler.capacity.root.default.maximum-capacity + 100 + + + yarn.scheduler.capacity.root.default.state + RUNNING + + + yarn.scheduler.capacity.root.default.user-limit-factor + 1 + + + yarn.scheduler.capacity.root.queues + default + + \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/core-site.xml b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/core-site.xml new file mode 100644 index 00000000..2be9b242 --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/core-site.xml @@ -0,0 +1,36 @@ + + + + + + + + + hadoop.tmp.dir + /data/hadoop + + + fs.defaultFS + hdfs://localhost:9000 + + + hadoop.http.staticuser.user + root + + + fs.hdfs.impl + org.apache.hadoop.hdfs.DistributedFileSystem + + \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hadoop-env.sh b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hadoop-env.sh new file mode 100644 index 00000000..3c57ab9c --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hadoop-env.sh @@ -0,0 +1,8 @@ + +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk +export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)} +export HDFS_NAMENODE_USER="root" +export HDFS_DATANODE_USER="root" +export HDFS_SECONDARYNAMENODE_USER="root" +export YARN_RESOURCEMANAGER_USER="root" +export YARN_NODEMANAGER_USER="root" \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hdfs-site.xml b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hdfs-site.xml new file mode 100644 index 00000000..73d9f71a --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/hdfs-site.xml @@ -0,0 +1,24 @@ + + + + + + + + + dfs.replication + 1 + + \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/mapred-site.xml b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/mapred-site.xml new file mode 100644 index 00000000..1a9adfda --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/mapred-site.xml @@ -0,0 +1,28 @@ + + + + + + + + + mapreduce.framework.name + yarn + + + mapreduce.application.classpath + $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/* + + \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/yarn-site.xml b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/yarn-site.xml new file mode 100644 index 00000000..5957ce2e --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/hadoop/yarn-site.xml @@ -0,0 +1,61 @@ + + + + + + yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage + 98 + + + yarn.nodemanager.aux-services + mapreduce_shuffle + + + yarn.nodemanager.env-whitelist + JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME + + + yarn.resourcemanager.scheduler.class + org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler + + + yarn.log-aggregation-enable + true + + + yarn.log.dir + /data/hadoop + + + yarn.log.server.url + http://localhost:19888/jobhistory/logs + + + yarn.scheduler.minimum-allocation-vcores + 1 + + + yarn.scheduler.maximum-allocation-vcores + 1 + + + yarn.scheduler.minimum-allocation-mb + 256 + + + yarn.scheduler.maximum-allocation-mb + 4096 + + \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/ssh_config b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/ssh_config new file mode 100644 index 00000000..79611d11 --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/ssh_config @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +Host * + StrictHostKeyChecking no \ No newline at end of file diff --git a/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/sshd_config b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/sshd_config new file mode 100644 index 00000000..8a7c77b7 --- /dev/null +++ b/Bigdata/hadoop/3.4.1/24.03-lts-sp1/ssh/sshd_config @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +ListenAddress 0.0.0.0 \ No newline at end of file diff --git a/Bigdata/hadoop/README.md b/Bigdata/hadoop/README.md new file mode 100644 index 00000000..b9f73104 --- /dev/null +++ b/Bigdata/hadoop/README.md @@ -0,0 +1,53 @@ +# Quick reference + +- The official hadoop docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# hadoop | openEuler +Current hadoop docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. + +Learn more on [hadoop website](https://hadoop.apache.org/). + +# Supported tags and respective Dockerfile links +The tag of each hadoop docker image is consist of the version of hadoop and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[3.4.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/hadoop/3.4.1/24.03-lts-sp1/Dockerfile)| Apache hadoop 3.4.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +Deploy a hadoop instance by following command: +```bash +docker run -d \ + --name hadoop \ + --hostname localhost \ + -p 9870:9870 \ + -p 8088:8088 \ + -p 19888:19888 \ + openeuler/hadoop:latest + +docker logs --follow hadoop +``` +The following message indicates that the hadoop is ready : +``` +Starting resourcemanager +Starting nodemanagers +``` +After that, please press Ctrl + C to exit docker logs, and visit hadoop web UI. +| Service Name | URL | +|----------------|-------------------------| +|NameNode | http://localhost:9870⁠ | +|ResourceManager | http://localhost:8088⁠ | +|JobHistory | http://localhost:19888⁠ | + +To stop and remove the container, use these commands. +``` +docker stop hadoop +docker rm hadoop +``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Bigdata/hadoop/doc/image-info.yml b/Bigdata/hadoop/doc/image-info.yml new file mode 100644 index 00000000..aea20c18 --- /dev/null +++ b/Bigdata/hadoop/doc/image-info.yml @@ -0,0 +1,70 @@ +name: hadoop +category: bigdata +description: Apache Hadoop 软件库是一个框架,它允许使用简单的编程模型在计算机集群之间分布式处理大型数据集。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + hadoop镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[3.4.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Bigdata/hadoop/3.4.1/24.03-lts-sp1/Dockerfile)| Apache hadoop 3.4.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/hadoop:{Tag} + ``` + +usage: | + - 启动容器 + + ```bash + docker run -d \ + --name hadoop \ + --hostname localhost \ + -p 9870:9870 \ + -p 8088:8088 \ + -p 19888:19888 \ + openeuler/hadoop:latest + ``` + + - 查看运行日志 + + ``` + docker logs --follow hadoop + ``` + + 出现如下信息则说明hadoop已经部署成功: + ``` + Starting resourcemanager + Starting nodemanagers + ``` + + - 访问服务 + + hadoop部署成功后,使用`Ctrl + C`退出容器的日志, 并使用如下链接访问hadoop web UI: + + | Service Name | URL | + |----------------|-------------------------| + |NameNode | http://localhost:9870⁠ | + |ResourceManager | http://localhost:8088⁠ | + |JobHistory | http://localhost:19888⁠ | + + - 停止服务 + + 使用如下命令终止容器: + ``` + docker stop hadoop + docker rm hadoop + ``` + +license: Apache-2.0 license +similar_packages: + - Apache Doris: 原名 Palo,MPP 架构的 OLAP 数据库,支持高并发点查询和实时分析。 +dependency: + - openjdk + - ssh \ No newline at end of file diff --git a/Bigdata/hadoop/doc/picture/logo.jpg b/Bigdata/hadoop/doc/picture/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fceb3201f13a7d0260603a019f0c1cd9421fc8b GIT binary patch literal 16389 zcmb8VV|ZoF6F7Kd+qP}nnIse2wr$(CZQHhunTat;CYV^8d9}a)?ta<6=iJlXg{RM{ z>gww1`dI(?0YH=%ml6j60RaIdKYxIaT|l~+yM-wLAS(-?1^@t%05BkI0N7^@=<}8a z!uhYR2t)}0`KurJ6UYSk{0G2(-kM<+0MNhs0f0|Ff0a+pf6@Q-l#r5@CuFAQq-Wv; z06^ja0Eka0C?hiyWB$K&CPv15puf3)eEh}Xb7a7U=FZOc+zbr1PV@%Gc7`VOMs_v~ z?gsV@O!SNl0A2xidjlgY6K6t06Eh22K8jymeH4Ti#(WfNY_g29_97HIg)_gDt&#aZjQ<~y|0tB~Or6~f98LIz{z!pP%ErLVMA5{+*yA6% z|KR^oh1&$$283IAz)ssYnKME{HOADy_hfs?tsh5Ns>|F-|5|CIbc^#6kX zMg5P5h@G{aqtd5pnDDFE8W~ty7&;m_n;8E?_CL^188Q43^#2IyQ*eLxeG30m4H*7Y zme0n2>Skj5sbh|Rl<8v&AOZje0{V0PQ$WB#{uFRfP!KQ(a0rM$HzX7c6eJ`xBm@LB z95gfx>}P?1f=7UZh5u9k!{iV7AF9s_77_yT561t$@-YZNf&@qaVSxZ40f3Q!K#+hw zh5>j0z$f27ll{K}4h8`N3JC-Z^$ErW0sw*iA5Z`=2q+jh5Cr7MCIA)$2mp)-g7`U; zFZuxhUXZXJ01#eO1ev&$={E=a{H)Z~bI41s7<%=a^76^Itn5k(H_Lm^&-o1i+~%lN zwW$?$h1WF28>I4VO7Q90oq7WRsE;aG9xS~oc2Qoy>%XB-`BQND=xvd*6UbZHI4?7C zyC{q;)iX`iXwJqxvou|$X3pl4s>*YY(R7>q^hTG~uAEb=ut2?go8V+-9;LP;LoL%e z(M#V-HP7zy*w^$3IaRJy+d^{eo@#2dvL|Eb`HPg!m&Y$FtMAD+v=wG2YQmMJwJg29 zw0xK2n5~wTNe*tuudTx|IIuvrFw$XW!%m?==bj%GI|V(Wo}RjDsC7#JLSq8K~1 zbGm^S+S6uH%s9z$zO8cpX+E72x2s8X#3A%^U;2$;AIZb!EpaQpri1%dg0r^*Ezi0X zFK%|G|I~*d@79##l*;+bv&G7KYBhtJPxgBFw`K4$Bm$SxbOZYS!PDZ3&bi{bP2CFr zl#aSD5(eG)PpZ;3u+^1y(jztL32G<%O@eMgd_{cA_)P~DY-=&C%E>X}aW1R9Pg7^# zIdp`Z15LlFZ1&u>aqqJox<(E+PFIfA8~!wJu)d_Rp7BHXR>p~Wa`8lSYlDdL0kXBK zkHLl($wyQ1%G9NBpOe4osj_=|!hJYpi}yOaOlvW_rC&{|s4h=t(F&D~%d9IDEllT> zku+lVn)E;@)~W4gKWQqIEBTFW7&Xt0Ve!MU$~1EDjY1~bXQul~`}G3pz)wc>nIhEL zP;KRRr~jwDU-goI3MnFkt^5G!fN$Jx$@%`qeqa7=S!q{>_kI7D`t4I}?Mq3^H>>*A zwak>Z)jj#UDCQb)yrS&P1M^kuT2X&n<;499hJ+f)4J9T>-@z=!0PvkgF)wtr1#WWE zt52;%Tvygs8Sk0KrL~ChkA@T+KPE!jG4fY+JUYKk8P3v4&TSzPXMK(7pcp@=3_sjF zqM&*YFz2G)=URvzZaQh{8nZZj%a~e2S1!k7fTxb5zanToXjx35I?Z6u73b_B9#4_g9G3S4tWm8# zap&dvyzl6`pbMn3m)LfYFXi>Bt}nUaVN9wvj?p)bUAeGwQa|TUumiGLpL@}K-0oWZ zk1Xrq4sk-D+X9-Lc_v**Q0!YYl15Ei?MSmRUvlMMe*a!GEwbYa`kFYjrYW%AA|TWF z6V|#tydt^I>VV*NwoiNz`FXxF(f47G8cM zc8qwN$O5;e-hZj0HMcL_Rf`4`hFJE3a@Df3dBp)<$uLTEBhR6bD=s0BXOc!iN=<=Y z6psDdF9O&I9@DH1vrdIP;@LGRMw^^7=44B_6}(^ty>bc5bjN4|MXhObE0T*J;!WNyXYdfk*(?;3#JLr7-MsQTVm^jFgw>Z zWX+6}=MUgGT-%YHYB-{6ytME9syjS#{a!uGzb>-9_bC($)6_v1)hxQIk~!&X%ob{? zRHGq7g||cKKCaT-2iEz?uU~!uNX?9FGltgcN`rkEbn=gHi|91RyMpAfGVSeJA~$8D zpTEcilO67`?W^}`0OWn_Jm2Xf9@`M~&Zl4O%r+9&Evc0BHslzblg4HbxEI@a{dq3l zME2F|WW}67cDKI?;g0Fsnnf+t6c#6yi>dnXx0o7ec6ejKrH`o7ZKY7>;Jh-|jofuo z|88l5GaA9XYj2%$Ke^j>^06-u?5d?xBaHKt4Ip!-FNFjIS-~kriv{UXwryIXcW_1@EsB7Us0V);ZsrNw3h8m9+I17xh zRW9uBbE|$bE52S5DWRow|3T7a1BPxTaNgINoC|+_%Bs?L2pBLd7|0(V{<8r6S<;b^iI~7qh=mlG z3m_0t(a;G=6b&2_8Za1HgaZT@c9jAX2d@6IPM^+#0MKiu2;H7?*ir=K;q7>c9J6|S zF~`PoudsIUh%n9V1Ua)91o$z)o+$ z;Oz9meF~~z4REQoVCR}1Tm}p#hiqBiLQz`kPob0Xj6Q{^0Sz6j5l?Suy$#$u^=xwKIf#gn+*la@g4sU6--}^L-!QF z1TZmaXc_dTo)`h-Wn`H-C}>OkP(>({VJUo1zd~RCRNo}zz6X6gm8G|eXN(9cHoQcf zl4(7Yrf2X9<{iI@EU{&R^(WX8DutaD^Td~oNVA}31F~tIxdH^y3K`Nlm%F)3q$aBD zr*Q>+s{{;z^eE{F)apT6#&t{7YQpJX>3u@Y&cWTYZ(zeZd*670d6iljH>JpopjA;= z7*k5jJ4LGZb%nq1bdyt~wXP7(N@-fMD8N*NYRGBXa+YI(IkMb6r=Xh_F?&1fx9+x)j==kJx1~&XOR_8DQT25 zA*D{v6bEh&2ay^Z=EztQ8CW+R`G`2krzu}!Acu-&Kt+&NeQVI|zk@@)DGvV8?K;I5Zmny4hZhmbEWmzIOP9cXniH*#a}g z0P|d{H(+!^gAxU-a(16y*k(dKX&fim;}!$$pT06mDFPv0upZ2`q$0|>` z-z2si362W6K?1Q@cwBxhPpoBBe0c(qg?_UX0_gAij6hp1gEkh$il40!h)ca`CZNbA zG7YzkE7G*wToPmsTS6@i8&uXEG3myOi)m}CQtOw(yg?4z!z;ViqFs@V(VRD$^n^cS zvMAQZT3}fE1BsdvW{|G694m*(4pgNycDdgO;DUPCnOp!|X0s}PpCio(KiF$(Y z#q+p~N!7w4wTKyZt*kj3u8N4bj_Y7o-}|&MBW)jL!P~Z zqbbiwMx?b;93CBhZ>O@wbl^A5$VtYf(x46qT((>?&ysinT-8m|tk_gN2QoShYU>cz z{BCz#v19^ebZz!+W5zeksZEXtC^s{YvP-y&tOwuS2`~QKDRP6!7~C!-yIXnB!ij{E zR4G!w@dg;g2DoC^g)0{v`hg8w%8+n%9ra#go1%<2vQbdMTdq3 zbV1R-)_~95tN_rR-I=UY|B|6H1HEncvh|#sj<}?+ux(qJhu@(RZxmbihS> zKiEswjoyx$+0+h^bEwu5Wh3SIlLzXY`jFgx+niR#_N&(Mi|y!RycO_uMcG$f#FAOZy$iQa0aKTtO>D<#Q4if&Tn>RE^^@P zX}6Ta`{-vAbrd8!w^zvxPikp~AAqsC)hb6`r?$>->}#E9vH}}Yx?F7BwT{lzMQGa` z&NDhYDyy;#*SN)xWt)>~8dXd}LzNre&P&sT9=kN|-`+vDl&$uARnHn`@5 z-v#s-5^FM=csrR)D>cnjOiD`4uvF5$n_X}+njME6(oYyy(*y(#TD9=lZluR>wh{wF zp2W}1i=(u73atbWvgbV>!GT;3jl}#nOla&EchxduDc_*3Kdt6VA%N@Q;o4<$}l?okT-ImnM{WG%!~@)TmEQtQ$hjm!{v`v=o|UO5Qhl^%X=AAs){&cpaVqNV}ZrDT7mr7)qkoSB31s-^%f%Qq>)ez@`y35nc%!abL|a1#qu zW|qb>tiZ~gk$8NGQ~q&^XBvWsyR6L8>R|W+EUgX z7rIx98FFTI-1=91INSS6N5zpf(~;-zW{!DEauilcl(YTFf@g*=EU7A|uFjUOid&VC zM#dUlWqS>0z{SH@G>sc7Epbl7mzC5cWhUF9ED&N}Stx9l2#qRnFDFZTIi0E6r+KS0 zMMCw6&33)sj_#i{xXs$nTIEu)^tY9N=Ec8n ze*p9Xi-+qg&0i3mEo3dR<0+!Wg%txbO^Q+=eV>bAbfIxokxxDfM4`f--(xB6Ox8k8-xtUNG z$}VGcmZX#t8ODH7amW;vMIQmF$*rb_IqFV|n>hY1xthQy5xF0=xI45*yQk7;%smqLR%0K!HrVDg|7-IaE53YTyXf@+7-&)zz1Sg0e#g9F zZJM}Vr&x;(!G*cbZUvE&Lh2iEcmYI-GRWZJ}2a;?&sSN0X`iV&!vCn6M|+3#+>@kLYttUm+m#yY6&w z0%zr@JC~;wGTjAWH<|Cg~h0Q_Z|^w$&wW&&|~>GHK`}gnanV@vf{8U&Dx-a3)%ay zHuVu#Gdd+xu0wlGbz@3IOY((62K|n{SiYho4@!TLMua)iWt`o&pRu)RdAPZA)cp}8 zDDrAa9{@NS3k<#?O|3&%?Mo2c9CvaLDoYk{V9A^!@`Xtb#)du4XkVnP_oea|ccz`1 zIo7+jcY^P6gHCaqE(CV#9qb_JX{=L4wnycHezD*NWY)kj52R`BNqevKc00dqWb|bu_)#!&E9%#3VVHn z$S{8-xil+2D6|&P`koX^4PP8v+Ua@Ls@0vS;j+0#B>scr-fgdnW!g$HjkYA(_8jlr zONs+Pd6(45ectK7imba6&9UWvKI$itEFzUwqKtjaG}GD@h+%`B17g!V;{`YAsd_5E z3hhynKV9fvd0LR(80oKE+-6IwCU4ZGQfDxP2wRn?F(gknY%E#&GV_qs=W|VabC}}H zkf>&^Q=CJ@9J62aV{0syTpdF&*DU8D$<4^o;S24gPWg8$^tXX(v5Qmw5p#9rQvD;T zg-$6V;xRY4`|knhk*y`TRGE!RfG6yllif(3VL-l*J=jV3Y+^S=z_9&{0Y%`MOgbA8QvTesx7?z)7hT>PtyC{2; zjKoE}0}%AN6Kn9VB+RxGD|OldVAo3qzPsITx`QGZx*`U<`>~v9G!==3o}TOX^&0p- zMJ>|Bv1dIL8^Q|~_@psEkT9s4>~EHbL*wYA+WRBs6Rqr#C4YRswPvtZl~r^Rn&?4X z5~*@1PXK8ib|;~(%ayU(9@h48AOE#nQC3yR8# zMH1#%T+sAa)x)&&yBGI=pWz}2W*#O~2D3C(CzvJ7_c@equa8`Md&Xp9$6wZ)M83Dnn4o+bduyS}&))f+i7`weWx31l^&JWZ5-$z~Rpohm8THk<4v; z1*X*UruSam*j~lsE^3AtryYWjQ z@{*jY^@~LgD0fn)DaH_+-a8t2ohB@u+=0`q`2iS0 zox>&Ox+SItRYUES}awPE&|I)wln8g%Qll{mOyvmRwgfyhkGAqO$={D ztg<*cIQATE>JcRjyW!0!4u#Vi-P!Uqc#5CxL}~7%y;?8P;$BYGdVze8emOeYL^o$a zwqIyzBK{O*2pt}?S1y)-08<4Mr;02|vLT_PKqp-`09M^6riKD}bADOMi5EWw$7nvA zONys%DJ@zZYa&9CDhPxh=rHk!s#`0wN*4iAT;yBjgA1M_hHKU;*LL#e+P_$80siJ_ z*Ou<;GXgG_dK$%a2uNkEaGEcULB+z~);RYh>5GH?n$X4bC4qkcCO0|xxCF*GOkxhl zC~LK5Ua~eCvuK2n4?`ShCE$lRi0MYCQPxsFJ#mfmdX#HpWx3P!FMr^GvanF*wxUdF z6lvAm(poUEl}ade5Cq>q(Nn7Pw5C|9tZ9n;}g+5;M^Jfe*f|dyf{C5noi9T$}E^&c#Zb_@zyI?7P=+|0H~RFe05? zdCZ_L`I;gB0pMp&j|p&Zo%ZEgd4(MAxRYgdT0Oeu6TVPW9f83k1lir%k08vfqSG+s z*0y$0f5t#k8c;}^V!b30MLjP53bZn6(1?-h{?u&LJud2ZHsUnwOov7k%K%a)?RgPE zqo^VQ6`?FSU;m{q4t^!QO4J8{x|X?<`nj#RB)=%J zCX=%@S|c{T^|v0X@`jSBBa^8|W|bg8Rxv`#7?$Jd5}E9=9iD{S!ct`Cl?&`_r^V8q z<$Q1PsGrJeOl3!X8!$1peRG1HjTA5f$_Jn+@;>sc`FAO$&ALqipRqwW$xCIF+cB!_ zcP`Ath6*!v^fV>usbUY+`u(w5P9xS@fy*Lwh)E8CiJzk?c+Xt)dTe%+@#i(Sb}!|D z%U?uvB*?$T*79A*Quy@TLL zc#tTog-NWVBq!Jb-M8jH+@Po?lIa-5SW{MQPAGBHSiOLRz3rlcNcWQZ);sD#xK!)z zQ4i5(E=*7;$0EJQJsnT3VysV}szbKY`SOt6=kt#q#W7WC+3iNXzG}heGFj_?H zE2(US?#tt=nYAf1g%H)LjKaIkXvkecbWi!A6me`W=L6fMhG4_>(D;+G$@Uq)u0r25 z4w8!E;lhXl)N)*FLUSIIl~K~d3jZvX6I#YrgQ(9th6#T(FLQXM1-0rlgNws4<^z?0 zM%KlT#ltH)R@fI=qK!`R!8c;BP%fcDWzV8?uBBg@h-mUpZMbA&J}|P(^!~d$a6J%! z7u5^fr{d>pDzjMZnAAu~3@6=HEe6B5)9C7j#>oUFQoFKmoC@UxINy<%zofRVy3#+J zBnVN&{@kUmXxvg3>%q$TF7&H`y_dN=5KGZAqH@tPS;;dh zVtL8lmut)icBK!1uU;LPk)-1$=4`8(&Du3Z#Hib(hJm}mtS0A)NEA~blm0u<<1_z- zmG;VlDHZ+*4dod&REqoNz5@X!uA(WL$Ea0CuTEWNiBL4;RBftJfq0SatK#aSN_HE2 zL3?O1`GN+5CdXIrvSaXJ!z$+5N~~N5wRy`V^l34~T~sTl5+9z~+w!dZ{allSy!=jEO8bt`$xAm^*LP>c}2Y( zd;sjQat)akDkD>+lCdYwB^3pKKI}Et$(0nBEh0E^JqH<)O;{OjDF}V#^HJ8!V5|GK zhX{!J9%D|32FY6WR=Ip?NirSh~#W8q2XxO9PRhfJ5~@n?mLbO9__@kN%*5ev1+npwva;dnI7Z!LB6MvL2yi6C~%qJA;sYits)dL z4goQfM+D?UFuanfcYui?oi3A|D;pn^$YKA+ZIN%|3Pj?oxJb2(@4*0}n?UK>I3{?a zqDaF#_4!VGg*_o@9Pm?LVCP9VvCI>PuVv5l%j(qWhEHR6oHQnFtl=xXcIXQdiXn+v zX(}7P!X;|`5}KIW-cJhHs3w|3#Ia6_J0lLpuL>*R9yDOuQ6LhyO(Wpo#uEWM^sfsU zg@6?IDWR&lXu;Ge)}r9Y0A3C*)uc)9Usyh{`KoC8%q(lqh3kDAu>FO=E9Kk{JVOnY z*7mf>#5;(&)dXTjhxQ?cx-i0Erd|E`1EU64s3qiAL9ND--#`h1@M(Qle7ApyfKlz0%s1zneJ&dl;|vn_=S zKX3_&QB9hLBWD+Lkxi3TxYM9m3^*PAmJf7cJAtFyrm6GyaEgJHC3m3ajWZR^&J~3f z6g;rvIC1YCd4vw5V8Ty5k1kPCh&Oqa-V2YV*ol9}#ipcIaHF1kYZ@q-Fpn>4mP4)B zGb1`dHlPUu@EB^?QM!LaF>?&`1@Phh>Q95b%EBih1`zVmVK&*9n{0_o3&uJfMfyyv zikSy})8@i>4;bi+zVU6OH8#VV6B}~JG98<17GEip#~G$jQanHD;4bp8)W>k}TYojo zRQP$EIC-ZjtRKJUK3+%^0R;UekA7zQU_Opn$^E>xkT4X_++|wg#*t4Hnhb#BpxItO zf>sQ}&KV)u*s|+ZUYbA~IRA8q$vns?bU&Is_-JokMai55k!w)rL?dM9Br*=EN@~u4 zCM=52C8RU?gSC=6BKaQYIy{)EpUjbSh`>KtggZXCo=i~jtqcTn644+fk7jL_5M1uz zJqC+XhRkE;*Q>96$ar`!iGceHs^;r22vZl&k=WJp2atoQV-PIdvS>QvZv!s^AhX;e zn>`Of1G*ue%m!A(no5S5j=*=EB_Dw98}!g|d*po!>1Y_j5YU@$pf=>|7IE?kSmi8s z8*%+@Tp>(%iR>;p+smrd)D>dG{SySgl3bXfq|uUiNpp121w!CJ5jeD{`k2h*&=eiYBu+3iP%^O-Voze+3|=9HCits z%M3}A()BsGmx=)%hHPG)i->{nc%%juMnd@hB6Ak<`<>-3rTFBp{)h&$tWmuO{by;* zBUiU$@nV}wrwwqlKc5rLUru#PVTSIKrak~vQ1B(FdxnnTX|z$4_?B`YN)GBY>>$OM zc6v-PyYo2+7fxXcIUZyP3<_t`DUQj-criQgm{ z6$)Q^cs?=8nLdbM$N+glH-(2LA_KCCFGX$fIU^6N*p8Nb-8G18kf(bGf`X6h2^sZp6bMQrFT za5|YwY!8@?F9Iyg6!5DlG1hPq8*r&Qq!*}JbmuC$<`eS(46D`^S4`Ngz@m5f?^vmL zLn9@C6p41WF%=)3Y^+d~k{9D+C?Rza;^yV`EeqrI!*sng9UFw0CNNn3xwMohNR%E+ z@dWR

    C>UH(K~x?y7J%tkfv>I}^M95`2FtxftpAB3uA1a|c9r#j7-wYmFkHC7+X7 zd2HvAM?_+BSnnX3KC`CE%HOV=s{m5j#A#mTi+Y?Q2uiNtv3|UIuzrE(LGF6W;IJpz z*%Kj?c>Gl)>N$;K%PsS~}>KAZBC$8P&GMjY zqTN{I;9CE9S|k0+TvtW?4}hefxRp=m)aNPj*OK_~*BL*8?+7$bPa@AuQGU+I1QCN3 z6jTJ&9_ecmhZGL_-g|5V@QlorW4ZaX1<)4Px#E1I^>&>ENxb+PMtZ+K0MW5o3D8i^ z0Bm4bRdERb%rwZlO9Uw=BcWm8Fhclsa@eEbvk+GbEhL zJHfvRmwzQeBLX1(feRJ{S3g&4bzy&CD<;1o{&TdG{kno~h!%q6RUoUurZQlI=y7uY z%!-0?x9yBUrRQ?=&9jS{jdkkLBS&ja2-m43-!!3>b+Vpwf53Y-z)y-pV$Poq>;wSt z_a_?Z%9P5Gp`rTY4}2zxaP)tsihibgB78awR7iguhCc~ypV=UPg8@iHe;kHSe_>z& zv7q6Kka71PkKs?k2;zIT9F9^O(9leqdLbSA&7B4x+qa_0NE#C*u8`G%G!ylpg9?Ue`8nOuSe?I>x&;9tvuDcr7NiVI&=z@BxI$%z7c@WcRFvR+j^4j+64=Jn!qo~&Ez6w3&**K~?Fu4hPOQtH8!^h`fPy3FjvaFd zz%}hez?jo3a4WRH6e-E!`~a9nS7@8XsM*L$v02yJc||n9yWa)GIp`S;GOnutzt%w% zft4OO8f7kc^}7WG!VeP(r&~d!GAxJPpqFU6_I#HEP-ae|KU#L;MQe7cQ;GV-2Qu~d zyL^5H5XS>BoAzIfXZvsWo>K;n@%_H(p+~c%@DXC!kZU6%-YmiPmrtT=8P3(N=WI|Z z0P7#MO?>zbw+O*_EDd+reU1u=-N0tEhTp;FJv(j#tUf>G;oCJ*{@|8s&qhN?)nP_d zap-I=b3ON^_W+Pu#w|*rb&Z$wFF&UvOq;ogTb6^zJVv0kNc@}2+_LHX70*1z`1^U7 z35{9;R&cnQ%8nhKh4tauNCRkBcwW7=<~Dt+fZt-qELABDa(pmpu)Tqf|=8?5> zSQNs@bdB8SZi<3C$8Hb2V?28OraQ(%=lP3;j_QlH_Lv9#oP`UHO7Hd0W{4b&hmIsu zo#Q<>5~>JlV7*O^Y;3mL&fo3+7j|xWZC9mPD?pwy^(wf2j)(aw|(T6Wc7PJr5~Dnwbzdqbdrhp7jR`hJzQIDRJf76Z1bJ%yiY^B(}B znQsSFctim+jF>T zuGdWMDZ9Hse@nCaGJt6q?Mv*%Q_oj0y8y<>Lq}#$0_XTjX ze|4RLH1Qi8RNwCVHv>FVH6^6YjQd5gT6o{&W?y zb#3iQ`M_yEnpnA<3S1WZNUJ^THeT4VMoW&PAb=ZUVubp5A* z=B8odm+C3`A|FeXm?h|cOlmY}Li5uhiE*p)TkSdf7gIF$EEoqST(%26d8|jS!(WLyZ2$OK-qU+*I%rCP5)sg35>gNdf(W`&w?}}P41P#0=dj3*Z-}Zt0u=mSP|4nx4oekF zwl8)BY-LD50tOfReHoRf><&P=wrnoHF!xf2cZZaZdHw?*{05h3yK_TSx&beIJx)|A zTBVt6SB{XGEBn<0^*=Q_E>MhhT{XE#*kb40jT(vGtpwV`vDk@B~Hv=mF#yD zIBZj%{s4^p9bWl6z5)UQ_K&xO1o+!qLJUYCT)1K^Xc+jP@CxD^K$7_6c|0d#qT|Rn z*dG>GV@E^%#Ob%W3jw{$?D@k+8F@pv2u!?5~5CgKYek@=UwB&6rn5KKpuS+zJPj|xW5%BY`*^< zAFD$!QrwOp3Ww?rliEQQdh)j*sHBPYD5H%IKHVf~WR*3Lo%nv2d#W5#Cb5f)_3B`4 zz`TAbK_evQM(7g!d+5>F=Hh5Q(lT`&Exit(ryS8k|3Cb5jlaw7KzCmv->lqV1Nk@wAmj@6ds5e zo3lnQG>Hp$PFXBJS6OjTKWCt+vBf)KIf@9tM%c}QZDmWpBy#o!R8v6M zf(JaUO?ZGRIpwtxzKgto!>AX0b>YO$4axgW(25C{H^bzJqBv^^GfC2~kCR+LtpuiR zoz&99N<<3mp(tpV9zk7Tiz2tpjM}!C^Rq0dU?r;J79L`YCn0KB zK{DVLH9O_2m>#*nt8{?0;13)3tt^<1)vbm0s|r+x8vp{QXqX6OKP*)-Zac$#fiuHy z6YJ)(A`k~rc6(_IOi|8xqfbaDdk9z;w2UpZ=*WP2WjZqU!NgZwc<=0NIL-k{_=G}@~i&MM@g!)bUU z0aQUi;|q`)AsHaiiR6=U^Y<&Q)w?eEf&9oqVnbp%s282|A?Q2XQv=^N zKco|-W5@I#U_tB0;>^p08417oV5*$G<7jA3m__gdK$^*WE49gWs>cZqcZ!_BWOclXAn74im~3}o9J&Yvf%HyDM8YYAqR1_u zuK#*ml=RBb$EoTlCHk380OCH9#y>Jis0#%R0j*#aB7LZAfy9ME5t&jeDhej3Sz6#XLE{D(+cJo9D58Gq%mFCup`L`v)dL{}UVl@1ncb!Ph%H=>T>@9jf6Lf>NH# zC4y4?Yl|3+ckfflsaUnUQ|Kxb8j0!2LTouk{k{E9mj)pyHgr#_q31lRHHv6E{)8}L z2{>c>Bw(Q^wAfuyN~+()h*^C2R63OEP>dW%$B?uh#_*sdNZ6>2@-kKc?Ec&@?!Y%d za{}8N2tCqo4WfNFO%7lzFp}jjt>e7;mJ(4BXGVJkuOvX+A+Xa{2OH7~XgAWmk}y@E zoPbbg1VR>2K@G|CbuO9wB%v2s0$#%^bs27cf7ozf$Vi4@p1_s)1~FC;5a+HrXWdie zl|YUzno!7cF-X@`09iaN+We8{FOu~;J9BEnWq9?0zz(P_!XQd8;Q$+7ATb9+n0&UB z_ZA&spvht|NY3Hl>&ftJTYrTF1gPf&sY)`+1yT2dK+=7va->}#azH*jrbMH}h*JJA zZQknDFfE)sWHOmPb=;b*BS?6>cConM?L?M0VMqC-Tnj7yY371?TzRxRDG~h_AtA!R z3{~RCL86dBVHDHN0@tY2hSIQKdh*%;fVS9JHU(B5rb75HpKil}*=X$|Z!&OyI+mr9 z`qYEtdVev(-B4K_QUd`=b%23FVCD|3nYfqTy__TLVHEl50?3>Q!fx0|GuiL2Pj%5H zql{nuMSRBGU_?drtWd59g!Ru3vHxw%7Vzv;Kv_Z#)<#P0 lZN>_iydMV*bqoSBqAQ?DY_Hc|5tgX~cgjNHjo@SB{{qB;^Y#D$ literal 0 HcmV?d00001 -- Gitee From f6fe1ac2bf6035997336de7b6063e2127544a329 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 30 Jun 2025 10:20:13 +0800 Subject: [PATCH 2/3] fix format error --- Bigdata/consul/doc/image-info.yml | 2 +- Bigdata/doris/2.1.9/doc/picture/logo.png | Bin 0 -> 51878 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Bigdata/doris/2.1.9/doc/picture/logo.png diff --git a/Bigdata/consul/doc/image-info.yml b/Bigdata/consul/doc/image-info.yml index 234057e1..9f5b2226 100644 --- a/Bigdata/consul/doc/image-info.yml +++ b/Bigdata/consul/doc/image-info.yml @@ -54,7 +54,7 @@ usage: | - 访问容器 ```bash - docker exec -it my-consul /bin/bash + docker exec -it my-consul /bin/bash ``` 进入容器即可修改相关配置,进行开发调试,参考[developer.hashicorp.com](https://developer.hashicorp.com/consul) diff --git a/Bigdata/doris/2.1.9/doc/picture/logo.png b/Bigdata/doris/2.1.9/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..acc7406b998e09d2434998d79b0017fd144285f1 GIT binary patch literal 51878 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 AfB*mh literal 0 HcmV?d00001 -- Gitee From 86e50d3c7a0374b30523cda04dd495cf19fffaea Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 30 Jun 2025 10:49:11 +0800 Subject: [PATCH 3/3] fix file path --- Bigdata/doris/{2.1.9 => }/doc/image-info.yml | 0 Bigdata/doris/{2.1.9 => }/doc/picture/logo.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename Bigdata/doris/{2.1.9 => }/doc/image-info.yml (100%) rename Bigdata/doris/{2.1.9 => }/doc/picture/logo.png (100%) diff --git a/Bigdata/doris/2.1.9/doc/image-info.yml b/Bigdata/doris/doc/image-info.yml similarity index 100% rename from Bigdata/doris/2.1.9/doc/image-info.yml rename to Bigdata/doris/doc/image-info.yml diff --git a/Bigdata/doris/2.1.9/doc/picture/logo.png b/Bigdata/doris/doc/picture/logo.png similarity index 100% rename from Bigdata/doris/2.1.9/doc/picture/logo.png rename to Bigdata/doris/doc/picture/logo.png -- Gitee