虚拟机ubuntu系统+doker+hadoop分布式环境搭建

因大数据作业要求需用doker安装hadoop分布式

使用Docker部署全分布式Hadoop。要求只能在一台虚拟机中部署;需要有两个master节点(一个master节点中有NameNode,另外一个master节点中有SecondaryNameNode),四个worker节点。请写出此部署的所有命令和内容。

请注意:本人之前并未接触doker

参照连接

https://cloud.tencent.com/developer/article/1167995

https://dblab.xmu.edu.cn/blog/1233/

ubuntu虚拟机+docker+hadoop完全分布式环境搭建_ubuntu20.04安装docker和hadoop机器-优快云博客

总结:

第1步 - 安装Docker

官方Ubuntu存储库中提供的Docker安装包,但是可能不是最新的版本。为了确保我们获得最新版本,我们将从官方Docker存储库安装Docker。为此,我们将添加一个新的资源包,从Docker添加GPG密钥以确保下载有效,然后安装该包。

首先,更新现有的包列表:

sudo apt update

接下来,使用apt安装一些允许通过HTTPS才能使用的软件包:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

然后将官方Docker存储库的GPG密钥添加到您的系统:

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

将Docker存储库添加到APT源:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

接下来,使用新添加的repo源中的Docker包更新包数据库:

sudo apt update

确保您要从Docker repo安装而不是默认的Ubuntu repo:

apt-cache policy docker-ce

虽然Docker的版本号可能不同,但您还是会看到这样的输出:

docker-ce:
  Installed: (none)
  Candidate: 18.03.1~ce~3-0~ubuntu
  Version table:
     18.03.1~ce~3-0~ubuntu 500
        500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

现在docker-ce还没有安装,用上面这个命令我们能看到安装源来自的Docker官方存储库。

最后,安装Docker:

sudo apt install docker-ce

现在应该安装好Docker了,检查它是否正在运行:

sudo systemctl status docker

输出应类似于以下内容,表明该服务处于工作状态:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago
     Docs: https://docs.docker.com
 Main PID: 10096 (dockerd)
    Tasks: 16
   CGroup: /system.slice/docker.service
           ├─10096 /usr/bin/dockerd -H fd://
           └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

第2步 - 在不输入Sudo情况下执行Docker(可选)

默认情况下,该docker命令只能由root用户或docker组中的用户运行,该用户在Docker的安装过程中自动创建。如果您尝试运行该docker命令而不使用sudo或不在docker组中中用户运行,您将看到如下输出:

docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

要想在在运行docker命令时不输入sudo,请将用户名添加到docker组中:

sudo usermod -aG docker ${USER}

第3步 - 使用Docker命令

命令使用包括传递一系列docker选项和命令,后跟参数。语法采用以下形式:

docker [option] [command] [arguments]

要查看所有可用的子命令,请输入:docker

要查看特定命令,请输入:

docker docker-subcommand --help

要查看有关Docker的系统信息,请使用

docker info

第4步 - 使用Docker镜像

Docker容器是从Docker镜像构建的。默认情况下,Docker从Docker Hub中提取这些镜像,这是一个由Docker管理的Docker镜像市场,这是Docker项目背后的公司。任何人都可以在Docker Hub上托管他们的Docker镜像,所以您只需要将您的应用程序和Linux放在那边托管即可。

要检查您是否可以从Docker Hub访问和下载镜像,请输入:

docker run hello-world

输出下面的内容则Docker正常工作:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Docker最初无法在本地找到hello-world镜像,因此它从Docker Hub下载了镜像,Docker Hub是默认存储库。下载映像后,Docker从映像创建了一个容器,并在容器中执行了应用程序,显示了该消息。

您可以使用docker带子命令的search命令搜索Docker Hub上可用的镜像。例如,要搜索Ubuntu映像,请输入:

docker search ubuntu

该脚本将对Docker Hub进行抓取,并返回名称与搜索字符串匹配的所有镜像的列表。输出将类似于:

NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   7917                [OK]
dorowu/ubuntu-desktop-lxde-vnc                            Ubuntu with openssh-server and NoVNC            193                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   156                                     [OK]
ansible/ubuntu14.04-ansible                               Ubuntu 14.04 LTS with ansible                   93                                      [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   87                  [OK]
neurodebian                                               NeuroDebian provides neuroscience research s…   50                  [OK]
ubuntu-debootstrap                                        debootstrap --variant=minbase --components=m…   38                  [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                                      [OK]
nuagebec/ubuntu                                           Simple always updated Ubuntu docker images w…   23                                      [OK]
tutum/ubuntu                                              Simple Ubuntu docker images with SSH access     18
i386/ubuntu                                               Ubuntu is a Debian-based Linux operating sys…   13
ppc64le/ubuntu                                            Ubuntu is a Debian-based Linux operating sys…   12
1and1internet/ubuntu-16-apache-php-7.0                    ubuntu-16-apache-php-7.0                        10                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10   ubuntu-16-nginx-php-phpmyadmin-mariadb-10       6                                       [OK]
eclipse/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   6                                       [OK]
codenvy/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   4                                       [OK]
darksheer/ubuntu                                          Base Ubuntu Image -- Updated hourly             4                                       [OK]
1and1internet/ubuntu-16-apache                            ubuntu-16-apache                                3                                       [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4         ubuntu-16-nginx-php-5.6-wordpress-4             3                                       [OK]
1and1internet/ubuntu-16-sshd                              ubuntu-16-sshd                                  1                                       [OK]
pivotaldata/ubuntu                                        A quick freshening-up of the base Ubuntu doc…   1
1and1internet/ubuntu-16-healthcheck                       ubuntu-16-healthcheck                           0                                       [OK]
pivotaldata/ubuntu-gpdb-dev                               Ubuntu images for GPDB development              0
smartentry/ubuntu                                         ubuntu with smartentry                          0                                       [OK]
ossobv/ubuntu
...

OFFICIAL列中,带OK标记的表明这个镜像由公司构建和支持。其他镜像则由个人创建。确定要使用的映像后,可以使用命令pull将其下载到计算机。

执行以下ubuntu命令将官方映像下载到您的计算机:

输出

Using default tag: latest
latest: Pulling from library/ubuntu
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Status: Downloaded newer image for ubuntu:latest

下载映像后,可以使用子命令run运行容器。正如示例中那样,如果在使用子命令docker执行时未下载hello-world镜像,则Docker客户端将首先下载镜像,然后使用run运行容器。

要查看已下载到计算机的镜像,请输入:

docker images

输出

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              113a43faa138        4 weeks ago         81.2MB
hello-world         latest              e38bc07ac18e        2 months ago        1.85kB

正如您将在本教程后面看到的那样,用于运行容器的镜像可以被修改并用于生成新镜像,然后可以将其上传到Docker Hub或其他Docker镜像托管网站。

到此doker安装成功,若对doker不熟悉建议在走一遍下面连接中5678步https://cloud.tencent.com/developer/article/1167995

第五步-Ubuntu系统初始化

该步骤是在进入容器的交互端口后进行的命令大致如下

这是进入已有容器的情况

 docker ps -a  ->docker start [CONTAINER ID]->docker exec -it  [CONTAINER ID] bash

docker images表示列出Docker上所有的镜像;镜像也是一堆文件,我们需要在Docker上开启这Ubuntu系统;在启动Ubuntu镜像时,需要先在个人文件下创建一个目录,用于向Docker内部的Ubuntu系统传输文件;命令如下:

cd ~
mkdir build

然后再在Docker上运行Ubuntu系统;

docker run -it -v /home/hadoop/build:/root/build --name ubuntuV0 ubuntu

这里解析下这个命令参数:
* docker run 表示运行一个镜像;
* -i表示开启交互式;-t表示分配一个tty,可以理解为一个控制台;因此-it可以理解为在当前终端上与docker内部的ubuntu系统交互;
* -v 表示docker内部的ubuntu系统/root/build目录与本地/home/hadoop/build共享;这可以很方便将本地文件上传到Docker内部的Ubuntu系统;
* --name ubuntuV0 表示Ubuntu镜像启动名称,如果没有指定,那么Docker将会随机分配一个名字;
* ubuntu 表示docker run启动的镜像文件;

ubuntu初始化

更新系统软件源

apt-get update

安装vim

apt-get install vim

若出现以下代码,表示选择时区根据实际情况选择,5表示亚洲

lease select the geographic area in which you live. Subsequent configuration questions will narrow this down by
presenting a list of cities, representing the time zones in which they are located.

  1. Africa   3. Antarctica  5. Asia      7. Australia  9. Indian    11. Etc
  2. America  4. Arctic      6. Atlantic  8. Europe     10. Pacific
Geographic area: 

Geographic area: 

Geographic area: 5

19表示重庆

Please select the city or region corresponding to your time zone.

  1. Aden      16. Brunei       31. Hong_Kong    46. Kuala_Lumpur  61. Pyongyang      76. Tel_Aviv
  2. Almaty    17. Chita        32. Hovd         47. Kuching       62. Qatar          77. Thimphu
  3. Amman     18. Choibalsan   33. Irkutsk      48. Kuwait        63. Qostanay       78. Tokyo
  4. Anadyr    19. Chongqing    34. Istanbul     49. Macau         64. Qyzylorda      79. Tomsk
  5. Aqtau     20. Colombo      35. Jakarta      50. Magadan       65. Riyadh         80. Ulaanbaatar
  6. Aqtobe    21. Damascus     36. Jayapura     51. Makassar      66. Sakhalin       81. Urumqi
  7. Ashgabat  22. Dhaka        37. Jerusalem    52. Manila        67. Samarkand      82. Ust-Nera
  8. Atyrau    23. Dili         38. Kabul        53. Muscat        68. Seoul          83. Vientiane
  9. Baghdad   24. Dubai        39. Kamchatka    54. Nicosia       69. Shanghai       84. Vladivostok
  10. Bahrain  25. Dushanbe     40. Karachi      55. Novokuznetsk  70. Singapore      85. Yakutsk
  11. Baku     26. Famagusta    41. Kashgar      56. Novosibirsk   71. Srednekolymsk  86. Yangon
  12. Bangkok  27. Gaza         42. Kathmandu    57. Omsk          72. Taipei         87. Yekaterinburg
  13. Barnaul  28. Harbin       43. Khandyga     58. Oral          73. Tashkent       88. Yerevan
  14. Beirut   29. Hebron       44. Kolkata      59. Phnom_Penh    74. Tbilisi
  15. Bishkek  30. Ho_Chi_Minh  45. Krasnoyarsk  60. Pontianak     75. Tehran
Time zone: 19

安装sshd

接着安装sshd,因为在开启分布式Hadoop时,需要用到ssh连接slave:

apt-get install ssh

然后运行如下脚本即可开启sshd服务器:

/etc/init.d/ssh start

但是这样的话,就需要每次在开启镜像时,都需要手动开启sshd服务,因此我们把这启动命令写进~/.bashrc文件,这样我们每次登录Ubuntu系统时,都能自动启动sshd服务;

vim ~/.bashrc

在该文件中最后一行添加如下内容:

/etc/init.d/ssh start
配置sshd

安装好sshd之后,我们需要配置ssh无密码连接本地sshd服务,如下命令:

ssh-keygen -t rsa #一直按回车键即可
cat id_rsa.pub >> authorized_keys

------------------------------------------------

下次更新

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值