**本文将使用详细的描述和代码来展示Deepin系统下,一个包含master(主节点)+两个slave(工作节点)的简单hadoop(完全分布式集群)的配置方法,
以及一些基础的避坑指南,由于篇幅原因,后期部分配置文件详细内容会更换为文件超链接,所有文件均不需要任何下载积分,仅提供样例,也可直接使用**
第二部分传送门:[https://blog.csdn.net/welson650/article/details/105289339](https://blog.csdn.net/welson650/article/details/105289339)
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
如出现以下效果则证明安装成功:
(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
$ 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 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
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
$ newgrp - docker
1.随便新建一个空工程,并在与工程目录下新建一个目录,此处为day2
2.进入day2目录并新建hadoop目录:
(1)打开左下角的Terminal:
(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