最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用docker部署hadoop集群的詳細(xì)教程

 更新時(shí)間:2020年09月05日 09:22:32   作者:upupfeng  
這篇文章主要介紹了使用docker部署hadoop集群的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值需要的朋友可以參考下

最近要在公司里搭建一個(gè)hadoop測試集群,于是采用docker來快速部署hadoop集群。

0. 寫在前面

網(wǎng)上也已經(jīng)有很多教程了,但是其中都有不少坑,在此記錄一下自己安裝的過程。

目標(biāo):使用docker搭建一個(gè)一主兩從三臺機(jī)器的hadoop2.7.7版本的集群

準(zhǔn)備:

首先要有一臺內(nèi)存8G以上的centos7機(jī)器,我用的是阿里云主機(jī)。

其次將jdk和hadoop包上傳到服務(wù)器中。

我安裝的是hadoop2.7.7。包給大家準(zhǔn)備好了,鏈接:https://pan.baidu.com/s/15n_W-1rqOd2cUzhfvbkH4g 提取碼:vmzw。

1. 步驟

大致分以下幾步:

  • 安裝docker
  • 基礎(chǔ)環(huán)境準(zhǔn)備
  • 配置網(wǎng)絡(luò),并啟動docker容器
  • 配置host及ssh免密登錄
  • 安裝配置hadoop

1.1 安裝docker

依次執(zhí)行如下步驟安裝docker。如果有docker環(huán)境的可以跳過。

yum update

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce
 
systemctl start docker

docker -v

1.2 基礎(chǔ)環(huán)境準(zhǔn)備

1.2.1 創(chuàng)建基礎(chǔ)的centos7鏡像拉取官方centos7鏡像

docker pull centos

通過build Dockfile生成帶ssh功能的centos鏡像

創(chuàng)建Dockerfile文件

vi Dockerfile

將如下內(nèi)容寫入Dockerfile

FROM centos
MAINTAINER mwf

RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients

RUN echo "root:qwe123" | chpasswd
RUN echo "root  ALL=(ALL)    ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

上述內(nèi)容大概意思是:以centos鏡像為基礎(chǔ),設(shè)置密碼為wqe123,安裝ssh服務(wù)并啟動

構(gòu)建Dockerfile

docker build -t="centos7-ssh" .

將生成一個(gè)名為centos7-ssh的鏡像,可以通過docker images查看

1.2.2 生成有hadoop和jdk環(huán)境的鏡像

  • 將準(zhǔn)備好的包放在當(dāng)前目錄下。hadoop-2.7.7.tar.gzjdk-8u202-linux-x64.tar.gz
  • 通過build Dockfile生成帶hadoop和jdk環(huán)境的centos鏡像

剛才已經(jīng)創(chuàng)建了一個(gè)Dockerfile了,先將他移開。mv Dockerfile Dockerfile.bak

創(chuàng)建Dockerfile

vi Dockerfile

將以下內(nèi)容寫入:

FROM centos7-ssh
ADD jdk-8u202-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_202 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH

ADD hadoop-2.7.7.tar.gz /usr/local
RUN mv /usr/local/hadoop-2.7.7 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

RUN yum install -y which sudo

上述內(nèi)容大概意思是:以上面生成的centos7-ssh為基礎(chǔ),將hadoop和jdk包放進(jìn)去,然后配好環(huán)境變量。

構(gòu)建Dockerfile

docker build -t="hadoop" .

將生成一個(gè)名為hadoop的鏡像

1.3 配置網(wǎng)絡(luò),并啟動docker容器

因?yàn)榧洪g必須要能網(wǎng)絡(luò)連通,所以要先配置好網(wǎng)絡(luò)。

創(chuàng)建網(wǎng)絡(luò)

docker network create --driver bridge hadoop-br

以上命令創(chuàng)建了一個(gè)名為hadoop-br的bridge類型的網(wǎng)絡(luò)

啟動docker時(shí)指定網(wǎng)絡(luò)

docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop-br --name hadoop2 hadoop
docker run -itd --network hadoop-br --name hadoop3 hadoop

以上命令啟動了3臺機(jī)器,網(wǎng)絡(luò)都指定為hadoop-br,hadoop1還開啟了端口映射。

查看網(wǎng)絡(luò)情況

docker network inspect hadoop-br 

執(zhí)行以上命令就可以看到對應(yīng)的網(wǎng)絡(luò)信息:

[
  {
    "Name": "hadoop-br",
    "Id": "88b7839f412a140462b87a353769e8091e92b5451c47b5c6e7b44a1879bc7c9a",
    "Containers": {
"86e52eb15351114d45fdad4462cc2050c05202554849bedb8702822945268631": {
        "Name": "hadoop1",
        "IPv4Address": "172.18.0.2/16",
        "IPv6Address": ""
      },
      "9baa1ff183f557f180da2b7af8366759a0d70834f43d6b60fba2e64f340e0558": {
        "Name": "hadoop2",
        "IPv4Address": "172.18.0.3/16",
        "IPv6Address": ""
      }, "e18a3166e965a81d28b4fe5168d1f0c3df1cb9f7e0cbe0673864779b224c8a7f": {
        "Name": "hadoop3",
        "IPv4Address": "172.18.0.4/16",
        "IPv6Address": ""
      }
    },
  }
]

我們可以得知3臺機(jī)器對應(yīng)的ip:

172.18.0.2 hadoop1 
172.18.0.3 hadoop2 
172.18.0.4 hadoop3 

登錄docker容器,互相之間就可以ping通了。

docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash

1.4 配置host及ssh免密登錄

1.4.1 配置host

分別在每臺修改每臺機(jī)器的host

vi /etc/hosts

將以下內(nèi)容寫入(注:docker分出來的ip對于每個(gè)人可能不一樣,填你自己的):

172.18.0.2 hadoop1 
172.18.0.3 hadoop2 
172.18.0.4 hadoop3 

1.4.2 ssh免密登錄

因?yàn)樯厦嬖阽R像中已經(jīng)安裝了ssh服務(wù),所以直接分別在每臺機(jī)器上執(zhí)行以下命令:

ssh-keygen
一路回車
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1
輸入密碼,如果按我的來得話就是qwe123
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2
輸入密碼,如果按我的來得話就是qwe123
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3
輸入密碼,如果按我的來得話就是qwe123

1.4.3 測試是否配置成功

ping hadoop1 
ping hadoop2
ping hadoop3
ssh hadoop1
ssh hadoop2
ssh hadoop3

1.5 安裝配置hadoop

1.5.1 在hadoop1上操作

進(jìn)入hadoop1

docker exec -it hadoop1 bash

創(chuàng)建一些文件夾,一會在配置中要用到

mkdir /home/hadoop
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data

切換到hadoop配置的目錄

cd $HADOOP_HOME/etc/hadoop/

編輯core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/tmp</value>
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <value>131702</value>
  </property>

編輯hdfs-site.xml

 <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/hdfs_name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/hdfs_data</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop1:9001</value>
  </property>
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>

編輯mapred-site.xml

mapred-site.xml默認(rèn)不存在,要執(zhí)行cp mapred-site.xml.template mapred-site.xml

 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop1:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop1:19888</value>
  </property>

編輯yarn-site.xml

 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>hadoop1:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>hadoop1:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>hadoop1:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>hadoop1:8033</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>hadoop1:8088</value>
  </property>

編輯slaves

我這里把hadoop1當(dāng)成主節(jié)點(diǎn),hadoop2、3作為從節(jié)點(diǎn)

hadoop2
hadoop3

把文件拷貝到hadoop2和hadoop3上

依次執(zhí)行以下命令:

scp -r $HADOOP_HOME/ hadoop2:/usr/local/
scp -r $HADOOP_HOME/ hadoop3:/usr/local/

scp -r /home/hadoop hadoop2:/
scp -r /home/hadoop hadoop3:/

1.5.2 在每臺機(jī)器上操作

分別連接每臺機(jī)器

docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash

配置hadoop sbin目錄的環(huán)境變量

因?yàn)閔adoop bin目錄在之前創(chuàng)建鏡像時(shí)就配好了,但是sbin目錄沒有配,所以要單獨(dú)配置。分配為每臺機(jī)器配置:

vi ~/.bashrc

追加如下內(nèi)容:

export PATH=$PATH:$HADOOP_HOME/sbin

執(zhí)行:

source ~/.bashrc

1.5.3 啟動hadoop

在hadoop1上執(zhí)行以下命令:

格式化hdfs

hdfs namenode -format

一鍵啟動

start-all.sh

不出錯(cuò)的話,就可以慶祝一下了。出錯(cuò)的話,加油。

1.6 測試使用hadoopjps

# hadoop1
1748 Jps
490 NameNode
846 ResourceManager
686 SecondaryNameNode

# hadoop2
400 DataNode
721 Jps
509 NodeManager

# hadoop3
425 NodeManager
316 DataNode
591 Jps

上傳文件

hdfs dfs -mkdir /mwf

echo hello > a.txt
hdfs dfs -put a.txt /mwf

hdfs dfs -ls /mwf

Found 1 items
drwxr-xr-x  - root supergroup     0 2020-09-04 11:14 /mwf

由于是云服務(wù)器,不想配端口,就不看ui界面了。

2. 最后

以上是我安裝成功之后總結(jié)的過程,應(yīng)該沒有問題,也可能有遺漏。

3. 參考

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

https://cloud.tencent.com/developer/article/1084157?from=10680

https://blog.csdn.net/ifenggege/article/details/108396249

到此這篇關(guān)于使用docker部署hadoop集群的詳細(xì)教程的文章就介紹到這了,更多相關(guān)docker部署hadoop集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker一鍵部署springcloud項(xiàng)目的方法

    Docker一鍵部署springcloud項(xiàng)目的方法

    本文主要介紹了Docker一鍵部署springcloud項(xiàng)目的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Docker-Compose搭建Redis集群的實(shí)現(xiàn)教程

    Docker-Compose搭建Redis集群的實(shí)現(xiàn)教程

    本文主要介紹了Docker-Compose搭建Redis集群的實(shí)現(xiàn)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用Docker安裝和配置 MySQL 數(shù)據(jù)庫的過程詳解

    使用Docker安裝和配置 MySQL 數(shù)據(jù)庫的過程詳解

    本文將介紹如何使用Docker來安裝和配置MySQL數(shù)據(jù)庫,以便在開發(fā)和測試環(huán)境中快速搭建MySQL實(shí)例,本文也是介紹兩種方式進(jìn)行分別是“使用鏡像安裝”、“使用Docker Compose安裝”,感興趣的朋友一起看看吧
    2023-12-12
  • 一文詳解如何獲取docker鏡像中的jar包

    一文詳解如何獲取docker鏡像中的jar包

    本人在工作中遇到了需要在docker查看jar這種操作,查看了許多資料,終于還是找到了,下面這篇文章主要給大家介紹了關(guān)于如何獲取docker鏡像中jar包的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 基于Docker實(shí)現(xiàn)MySQL主從復(fù)制的詳細(xì)教程

    基于Docker實(shí)現(xiàn)MySQL主從復(fù)制的詳細(xì)教程

    這篇博客整理了如何在Docker環(huán)境下配置MySQL主從復(fù)制,通過創(chuàng)建和命名兩個(gè)MySQL容器,設(shè)置獨(dú)立IP,并詳細(xì)說明了在宿主機(jī)上持久化數(shù)據(jù)、開啟root遠(yuǎn)程訪問及添加復(fù)制用戶的過程,需要的朋友可以參考下
    2024-10-10
  • DockerCE之執(zhí)行docker info出現(xiàn)兩條警告信息及解決方案

    DockerCE之執(zhí)行docker info出現(xiàn)兩條警告信息及解決方案

    這篇文章主要介紹了DockerCE之執(zhí)行docker info出現(xiàn)兩條警告信息及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Docker配置代理的詳細(xì)步驟記錄

    Docker配置代理的詳細(xì)步驟記錄

    docker是一個(gè)流行的容器化平臺,它讓應(yīng)用程序可以在操作系統(tǒng)層面上隔離運(yùn)行,從而提供了更高的可移植性和可靠性,這篇文章主要給大家介紹了關(guān)于Docker配置代理的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • Docker部署Consul配置過程解析

    Docker部署Consul配置過程解析

    這篇文章主要介紹了Docker部署Consul配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Docker安裝Jenkins(傻瓜式安裝)

    Docker安裝Jenkins(傻瓜式安裝)

    本文主要介紹了Docker安裝Jenkins,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解

    Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解

    這篇文章主要介紹了Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論

上虞市| 弥勒县| 霍城县| 东乌珠穆沁旗| 兴山县| 微山县| 双城市| 新河县| 简阳市| 光泽县| 三明市| 河池市| 宁海县| 庆城县| 固始县| 延川县| 武川县| 宜都市| 麻栗坡县| 旺苍县| 阜平县| 齐齐哈尔市| 栾城县| 桦川县| 汨罗市| 乡宁县| 肥东县| 威海市| 棋牌| 平谷区| 南皮县| 营口市| 亳州市| 固镇县| 大连市| 晋城| 邵武市| 万州区| 剑河县| 临泽县| 阿勒泰市|