在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(一)


在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(一)

    **本文将使用详细的描述和代码来展示Deepin系统下,一个包含master(主节点)+两个slave(工作节点)的简单hadoop(完全分布式集群)的配置方法,
  以及一些基础的避坑指南,由于篇幅原因,后期部分配置文件详细内容会更换为文件超链接,所有文件均不需要任何下载积分,仅提供样例,也可直接使用** 
  
  第二部分传送门:[https://blog.csdn.net/welson650/article/details/105289339](https://blog.csdn.net/welson650/article/details/105289339)

一、下载及配置Docker

1.如果安装过老版本的docker,请先卸载老版本:

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2.设置存储库
(1)更新apt包索引:

$ sudo apt-get update

(2)安装软件包以支持https协议:
主要针对下一步中的curl指令,安装curl时是不支持http加密协议的:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

(3)添加Docker的官方GPG密钥:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

注:此处如仍报curl不支持https协议,本人在安装时遇到过,此时运行如下指令:

sudo apt-get install curl libcurl3 libcurl4-openssl-dev

待运这几个包安装完成后,此时curl已经可以支持https协议。
此时输入$ curl -V,可以看到当前curl指令支持的协议:在这里插入图片描述
然后重新运行$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -指令就可以获取密钥了。
此时可以通过$ sudo apt-key fingerprint 0EBFCD88来验证获取到的密钥:

welson@welson-PC:~/Desktop$ sudo apt-key fingerprint 0EBFCD88
[sudo] welson 的密码:
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

(4)安装DOCKER ENGINE-社区
i.再次更新apt包:

$ sudo apt-get update

ii.安装最新版本的Docker Engine-Community和containerd

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

iii.此时输入docker如出现以下效果则证明安装成功:
在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(一)_第1张图片
(5)将自己创建的非root用户加入docker用户组:

$ sudo gpasswd -a username(这里替换成你自己本机的非root用户的用户名) docker

(6)重启docker服务:

$ sudo service docker restart

(7)待服务重启完成后,输入sudo docker ps -a进行验证,如显示如下则docker配置成功:

welson@welson-PC:~/Desktop$ sudo docker ps -a
[sudo] welson 的密码:
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                           
PORTS                                            NAMES

二、下载及安装docker-compose

$ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.25.4/run.sh -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

输入docker-compose -v查看docker-compose版本号,如果与下载版本相对应,则安装成功。

三、安装docker可视化图形工具portainer

$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

四、设置docker免sudo使用

$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
$ newgrp - docker

五、idea操作部分

1.随便新建一个空工程,并在与工程目录下新建一个目录,此处为day2
在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(一)_第2张图片
2.进入day2目录并新建hadoop目录:
(1)打开左下角的Terminal:
在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(一)_第3张图片
(2)看自己的目录如果已经在day2目录内,则输入如下指令创建hadoop文件夹并新建docker文件,如果未进入则进入day2目录:

$ mkdir hadoop
$ cd hadoop
$ touch Dockerfile

3.编写DockerFile此处提供样例:

FROM ubuntu:18.04
MAINTAINER author<[email protected]> //此处为作者信息根据个人情况进行修改,也可以直接删除




RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8

ENV LANG zh_CN.UTF-8

RUN apt-get update -o Acquire-by-hash=yes && apt-get install -y openssh-server openjdk-8-jdk

ADD hadoop-2.7.5.tar.gz /usr/local/

ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ENV HADOOP_HOME=/usr/local/hadoop-2.7.5
ENV PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
ENV HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

RUN mkdir -p /data/hdfs/namenode && \
    mkdir -p /data/hdfs/datanode && \
    mkdir -p /data/logs

COPY config/* $HADOOP_CONF_DIR/

4.下载hadoop tar包并置于刚才新建的hadoop文件夹下。

5.用上面的新建指令或者直接右键在hadoop文件夹下新建config文件夹,并导入/编写配置文件(配置文件共9个,其余5个见下次更新):
(1)core-site.xml

xml version="1.0" encoding="UTF-8"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000/
    </property>
</configuration>

(2)hadoop-env.sh
hadoop-env.sh(0积分下载)
(3)hdfs-site.xml,此处的dfs.replication的值应与你的slave节点数目相对应。

xml version="1.0" encoding="UTF-8"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hdfs/namenode
        <description>NameNode directory for namespace and transaction logs storage.</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hdfs/datanode
        <description>DataNode directory</description>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

(4)log4j.properties
log4j.properties文件传送门(0积分下载)
为避免篇幅过长暂时写到这里,并在下次更新后附上下一部分的超链接。
https://blog.csdn.net/welson650/article/details/105289339

你可能感兴趣的:(hadoop,hdfs,intellij,idea,deepin)