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

打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

下载jdk hadoop

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


将下载的内容解压到一个统一的文件夹中,必要COPY到镜像的文件都放入一个文件夹中,可以减少镜像层数。
  1. mkdir /opt/hadoop-space
  2. mv hadoop-3.1.3.tar.gz /opt/hadoop-space/
  3. mv jdk-8u151-linux-x64.tar.gz /opt/hadoop-space/
  4. cd /opt/hadoop-space/
  5. tar zxvf hadoop-3.1.3.tar.gz
  6. tar zxvf jdk-8u151-linux-x64.tar.gz
复制代码
结果:

修改hadoop配置

  1. cd hadoop-3.1.3/etc/hadoop/
  2. vim hdfs-site.xml
复制代码
修改内容:
  1. <configuration>
  2.         <property>
  3.         <name>dfs.replication</name>
  4.         <value>1</value>
  5.     </property>
  6.     <property>
  7.         <name>dfs.namenode.name.dir</name>
  8.         <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/name</value>
  9.     </property>
  10.     <property>
  11.         <name>dfs.datanode.data.dir</name>
  12.         <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/data</value>
  13.     </property>
  14.     <!-- datanode 通信是否使用域名,默认为false,改为true -->
  15.     <property>
  16.         <name>dfs.client.use.datanode.hostname</name>
  17.         <value>true</value>
  18.     </property>
  19. </configuration>
复制代码
  1. vim core-site.xml
复制代码
修改内容:
  1. <configuration>
  2.     <property>
  3.         <name>hadoop.tmp.dir</name>
  4.         <value>file:/usr/local/hadoop-3.1.3/tmp</value>
  5.         <description>location to store temporary files</description>
  6.     </property>
  7.     <property>
  8.         <name>fs.defaultFS</name>
  9.         <value>hdfs://0.0.0.0:9000</value>
  10.     </property>
  11. </configuration>
复制代码
编写Dockerfile

  1. FROM centos:7
  2. LABEL author="yj" date="2025/01/29"
  3. # 安装openssh-server
  4. RUN yum install -y openssh-server \
  5.     && yum install -y openssh-clients \
  6.     && yum install -y which
  7. COPY  /opt/hadoop-space /usr/local/
  8. # 安装vim命令
  9. # 设置java环境变量
  10. ENV JAVA_HOME=/usr/local/jdk1.8.0_151 PATH=$PATH:/usr/local/jdk1.8.0_151/bin
  11. # 设置hadoop的环境变量
  12. 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
  13. RUN echo 'export JAVA_HOME=/usr/local/jdk1.8.0_151' >> $HADOOP_HOME/etc/hadoop/yarn-env.sh \
  14.     && echo 'export JAVA_HOME=/usr/local/jdk1.8.0_151' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh \
  15.     && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \
  16.     && ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' \
  17.     && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  18. RUN chmod +x $HADOOP_HOME/sbin/start-all.sh
  19. RUN echo "root:111111" | chpasswd \
  20.     && echo "root   ALL=(ALL)       ALL" >> /etc/sudoers \
  21.     && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
  22.     && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
  23.     && ssh-keygen -t dsa -f /etc/ssh/ssh_host_ecdsa_key \
  24.     && ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key \
  25.     && mkdir /var/run/sshd
  26. EXPOSE 22
  27. 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'
复制代码
构建镜像

  1. docker build -t hadoop .
复制代码
运行镜像

  1. docker run --name='hadoop' -it -d -p 9000:9000 -p 9866:9866 hadoop
复制代码
创建客户端

如果出现连接9866端口报错,只需当地配置/etc/hosts即可
  1. public static void main(String[] args) throws IOException {
  2.         FileSystem fileSystem = null;
  3.         try {
  4.             Configuration conf = new Configuration();
  5.             conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
  6.             conf.set("dfs.client.use.datanode.hostname", "true");
  7.             fileSystem = FileSystem.get(new URI("hdfs://hecs-71785:9000/"), conf, "root");
  8.             FSDataOutputStream out = fileSystem.create(new Path("/wzj/test.txt"));
  9.             out.writeUTF("hello world");
  10.             out.flush();   //立即将缓冲区的数据输出到接收方
  11.             out.close();
  12.             FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
  13.             for (FileStatus fileStatus : fileStatuses) {
  14.                 System.out.println(fileStatus.toString());
  15.             }
  16.         } catch (Exception e) {
  17.             throw new RuntimeException(e);
  18.         } finally {
  19.             fileSystem.close();
  20.         }
  21.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表