【腾讯云】腾讯云docker搭建单机hadoop

这里写目录标题

下载jdk hadoop

复制代码
wget --no-check-certificate https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz
wget --no-check-certificate https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

下载结果:

将下载的内容解压到一个统一的文件夹中,需要COPY到镜像的文件都放入一个文件夹中,可以减少镜像层数。

复制代码
mkdir /opt/hadoop-space
mv hadoop-3.1.3.tar.gz /opt/hadoop-space/
mv jdk-8u151-linux-x64.tar.gz /opt/hadoop-space/
cd /opt/hadoop-space/
tar zxvf hadoop-3.1.3.tar.gz
tar zxvf jdk-8u151-linux-x64.tar.gz

结果:

修改hadoop配置

复制代码
cd hadoop-3.1.3/etc/hadoop/
vim hdfs-site.xml

修改内容:

复制代码
<configuration>
        <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/data</value>
    </property>
    <!-- datanode 通信是否使用域名,默认为false,改为true -->
    <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value>
    </property>

</configuration>

vim core-site.xml

修改内容:

复制代码
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop-3.1.3/tmp</value>
        <description>location to store temporary files</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://0.0.0.0:9000</value>
    </property>
</configuration>

编写Dockerfile

复制代码
FROM centos:7

LABEL author="yj" date="2025/01/29"

# 安装openssh-server
RUN yum install -y openssh-server \
    && yum install -y openssh-clients \
    && yum install -y which

COPY  /opt/hadoop-space /usr/local/

# 安装vim命令

# 设置java环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_151 PATH=$PATH:/usr/local/jdk1.8.0_151/bin
# 设置hadoop的环境变量
ENV HADOOP_HOME=/usr/local/hadoop-3.1.3 PATH=$PATH:/usr/local/hadoop-3.1.3/bin:/usr/local/hadoop-3.1.3/sbin HDFS_NAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_SECONDARYNAMENODE_USER=root YARN_RESOURCEMANAGER_USER=root YARN_NODEMANAGER_USER=root

RUN echo 'export JAVA_HOME=/usr/local/jdk1.8.0_151' >> $HADOOP_HOME/etc/hadoop/yarn-env.sh \
    && echo 'export JAVA_HOME=/usr/local/jdk1.8.0_151' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh \
    && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \
    && ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' \
    && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

RUN chmod +x $HADOOP_HOME/sbin/start-all.sh

RUN echo "root:111111" | chpasswd \
    && echo "root   ALL=(ALL)       ALL" >> /etc/sudoers \
    && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
    && ssh-keygen -t dsa -f /etc/ssh/ssh_host_ecdsa_key \
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key \
    && mkdir /var/run/sshd
EXPOSE 22
CMD sh -c '/usr/sbin/sshd && /usr/local/hadoop-3.1.3/bin/hdfs namenode -format && $HADOOP_HOME/sbin/start-all.sh && tail -f /dev/null'

构建镜像

复制代码
docker build -t hadoop .

运行镜像

复制代码
docker run --name='hadoop' -it -d -p 9000:9000 -p 9866:9866 hadoop

创建客户端

如果出现连接9866端口报错,只需本地配置/etc/hosts即可

复制代码
public static void main(String[] args) throws IOException {
        FileSystem fileSystem = null;
        try {
            Configuration conf = new Configuration();
            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            conf.set("dfs.client.use.datanode.hostname", "true");
            fileSystem = FileSystem.get(new URI("hdfs://hecs-71785:9000/"), conf, "root");


            FSDataOutputStream out = fileSystem.create(new Path("/wzj/test.txt"));
            out.writeUTF("hello world");
            out.flush();   //立即将缓冲区的数据输出到接收方
            out.close();

            FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
            for (FileStatus fileStatus : fileStatuses) {
                System.out.println(fileStatus.toString());
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            fileSystem.close();
        }
    }
相关推荐
一只小青团4 小时前
Hadoop之MapReduce
大数据·hadoop·mapreduce
天草二十六_简村人5 小时前
docker安装index-tts,实现文本转语音的本地私有化部署
运维·docker·ai·容器·ai编程
百***86465 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker
观望过往5 小时前
Docker 全面技术指南:从基础概念到企业级应用实践
运维·docker·容器
java_logo7 小时前
MONGO-EXPRESS Docker 容器化部署指南
linux·运维·mongodb·docker·容器·express
阳爱铭7 小时前
ClickHouse 中至关重要的两类复制表引擎——ReplicatedMergeTree和 ReplicatedReplacingMergeTree
大数据·hive·hadoop·sql·clickhouse·spark·hbase
IT瑞先生8 小时前
Docker容器使用手册——进阶篇(下)
运维·docker·容器
java_logo9 小时前
Kubernetes Dashboard Docker 容器化部署指南
运维·mysql·docker·云原生·容器·kubernetes·php
编织幻境的妖9 小时前
Docker底层工作原理
运维·docker·容器
gcfer10 小时前
Docker 介绍和常用命令
运维·docker·容器