VM+centos7+Docker+hadoop完全分布式环境搭建

第一步:VMware 安装

VMware 安装可参考网址 https://www.windowszj.net/pcsoft/youxi/35924.html

第二步:centos7.9安装

用root 账户登录centos系统

第三步:docker环境安装

3.1 添加docker到yum源

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

3.2 安装docker

#第一步
 yum -y install docker-ce
#第二步
 sudo mkdir -p /etc/docker
# 第三步:以下5行全部拷贝
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://10ph4ijp.mirror.aliyuncs.com"]
}
EOF
# 第四步 docker配置生效
sudo systemctl daemon-reload
# 第五步  重启docker
sudo systemctl restart docker

# 开启 docker 自启动
systemctl enable docker.service

# 关闭 docker 自启动 ( 这一步不用执行!!!!!)
systemctl disable docker.service

3.3 安装Hadoop

  • 第一步
# 执行
 docker search hadoop
# 以下是执行结果,可能每个人略有不同
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
sequenceiq/hadoop-docker         An easy way to try Hadoop                       661                  [OK]
uhopper/hadoop                   Base Hadoop image with dynamic configuration…   103                  [OK]
harisekhon/hadoop                Apache Hadoop (HDFS + Yarn, tags 2.2 - 2.8)     67                   [OK]
bde2020/hadoop-namenode          Hadoop namenode of a hadoop cluster             52                   [OK]
bde2020/hadoop-datanode          Hadoop datanode of a hadoop cluster             39                   [OK]
bde2020/hadoop-base              Base image to create hadoop cluster.            20                   [OK]
uhopper/hadoop-namenode          Hadoop namenode                                 11                   [OK]
bde2020/hadoop-nodemanager       Hadoop node manager docker image.               10                   [OK]
bde2020/hadoop-resourcemanager   Hadoop resource manager docker image.           9                    [OK]
uhopper/hadoop-datanode          Hadoop datanode  

  • 第二步
docker pull sequenceiq/hadoop-docker
  • 第三步查看安装结果
#执行 
docker images  # 查看所有镜像
# 结果示例
REPOSITORY                 TAG       IMAGE ID       CREATED       SIZE
sequenceiq/hadoop-docker   latest    5c3cc170c6bc   7 years ago   1.77GB
  • 第四步: 创建三个Hadoop 实例
docker run --name hadoop -d -h master sequenceiq/hadoop-docker
docker run --name hadoop1 -d -h slave1 sequenceiq/hadoop-docker
docker run --name hadoop2 -d -h slave2 sequenceiq/hadoop-docker

可能遇到的问题:

  1. docker ps 执行后没有看到运行的三个实例
docker ps -a    #查看所有实例
docker start fe2e78dd16cb c8edd12cef98 04b5376ff60c   # 通过docker start 启动容器,注意替换这三个12位的字符串,根据自己电脑的 Container ID
  • 第五步:Hadoop 配置
    再打开三个命令窗口:如下图


    image.png

    image.png

    分别执行

# master 执行
docker exec -it hadoop bash
# slave1 执行
docker exec -it hadoop1 bash
# salve2 执行
docker exec -it hadoop2 bash
image.png

master、 slave1、slave2 三个窗口都需要执行

/etc/init.d/sshd start
ssh-keygen -t rsa # 一直回车即可
cd /root/.ssh
cat id_rsa.pub > authorized_keys

本地(第一个)窗口执行

mkdir /ssh  && cd /ssh

docker cp hadoop:/root/.ssh/authorized_keys ./authorized_keys_master

docker cp hadoop1:/root/.ssh/authorized_keys ./authorized_keys_slave1

docker cp hadoop2:/root/.ssh/authorized_keys ./authorized_keys_slave2

touch authorized_keys

cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
cat  authorized_keys  # 查看所有秘钥,下一步要用

# 分别拷贝authorized_keys 到三个hadoop实例
docker cp /ssh/authorized_keys hadoop:/root/.ssh/authorized_keys
docker cp /ssh/authorized_keys hadoop1:/root/.ssh/authorized_keys
docker cp /ssh/authorized_keys hadoop2:/root/.ssh/authorized_keys
master、 slave1、slave2 三个窗口分别执行

查看ip

ifconfig

## 正常情况 master(inet addr:172.17.0.2)
# slave1(inet addr:172.17.0.3)
# slave2(inet addr:172.17.0.4)

vi /etc/hosts  ### 追加内容
172.17.0.2      master
172.17.0.3      slave1
172.17.0.4      slave2

cd /root/.ssh  # 进入到免密登录的秘钥目录
vi authorized_keys   # 编辑秘钥内容 与 本地窗口中的authorized_keys一致

验证免密登录是否成功

ssh master
exit

修改Hadoop配置文件

find / -name hadoop-env.sh
# /usr/local/hadoop-2.7.0/etc/hadoop/hadoop-env.sh
cd /usr/local/hadoop-2.7.0/etc/hadoop
vi core-site.xml

追加以下内容

      <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/local/hadoop-2.7.0/hdpdata</value>
      </property>

执行

vi yarn-site.xml

追加以下内容

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>172.17.0.2</value>
    </property>

master 窗口执行

cd /usr/local/hadoop-2.7.0/sbin  && ./stop-all.sh

scp yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop

scp yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop

cd /usr/local/hadoop-2.7.0/bin

./hadoop namenode -format

cd /usr/local/hadoop-2.7.0/sbin

./start-all.sh

master、 slave1、slave2 三个窗口分别执行

jps

运行后的结果如下

220 DataNode
549 ResourceManager
399 SecondaryNameNode
129 NameNode
2058 Jps
642 NodeManager

安装好centos后下载Eclipse
Eclipse下载地址:
https://www.eclipse.org/downloads/download.php

常用的dfs 操作指令

cd /usr/local/hadoop-2.7.0/bin  # 进入到hdfs 指令所在目录

./hdfs dfs -ls /   # 查看文件系统根目录

./hdfs dfs -mkdir /test  # 创建一个test 目录
1668933323357.jpg

在本地窗口执行

vi test.txt
# 随便输入内容,例如:
ddd
ddd
ddd
dd
dd
d

在 master 、slave1、slave2

1.  cd /usr/local/hadoop-2.7.0/bin
2. ./hdfs dfs -ls / 
3. ./hdfs dfs -mkdir /test    # 创建文件夹
4. ./hdfs dfs -put /home/test.txt /test   # 上传文件

找到MapReduce 的工具包

cd /usr/local/hadoop-2.7.0/bin

 ./hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar wordcount /test /testoutput 
# /testoutput 每次执行的时候命名不能重复

./hdfs dfs -cat /testoutput/part-r-00000  # 查看WordCount 后的数据统计

docker 每次重启后执行的步骤

打开四个窗口


image.png

1、 本地窗口执行-查看所有待启动的容器

docker ps -a
1669451837907.jpg
  1. 根据 hadoop 、 hadoop1、hadoop2 的顺序,启动容器
# 这里的ID要替换成自己的哦!!!
docker start d0841eaaa094 d670c33b3332 aa2ddd814014
image.png
  1. 在master 窗口执行
docker exec -it hadoop bash
  1. 在slave1窗口执行
docker exec -it hadoop1 bash
  1. 在slave2 窗口执行
docker exec -it hadoop2 bash
  1. 在 master、slave1、slave2中分别编辑hosts
vi /etc/hosts  ### 追加内容
172.17.0.2      master
172.17.0.3      slave1
172.17.0.4      slave2

或者使用 shell 脚本方式
master 窗口执行

cd   # 回到容器的根目录
vi runhosts.sh
#添加以下内容
echo  172.17.0.2      master >> /etc/hosts
echo  172.17.0.3      slave1 >> /etc/hosts
echo  172.17.0.4      slave2 >> /etc/hosts

#授权脚本
chmod +x  runhosts.sh 
# 发送到slave1  slave2
scp runhosts.sh   slave1:~
scp runhosts.sh   slave2:~
实训延伸:
7248cf97c6c42772fc6c63efb0be21c.jpg

下载的网址: https://github.com/jpetazzo/pipework
推荐的一个数据相关的博客地址:https://tech.meituan.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容