dockerhadoop(dockerhadoop集群)

本篇文章给大家谈谈dockerhadoop,以及dockerhadoop集群对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

在docker上搭建hadoop平台有什么目的

在docker上搭建hadoop平台目的占用资源含兄掘少。根据查询相关公开资料得知想在一台电脑上尘简搭建一个多节点的Hadoop集群,传统的方式是使用多个虚拟机。但这种方式占用的资源比较多,一台笔记本能同时运行的虚拟机的数量是很有限的。这个时候我们可以使用Docker。Docker可以看做是一种轻量级的虚拟机,占用资源谈核少,用起来和传统的虚拟机很像,使用的时候可以类比VMware或VirtualBox。

【大数据】使用Docker搭建Hadoop集群

启动后发现还是无念毕法使桥睁用hadoop、hdfs、hive等命令,我们需要安装hadoop和hive

这个时候我们进入bin路径下,即可执行./hadoop或者./hdfs等命令,我们接下来将其加入环境遍历以便全局使用这些命令,在~/.bashrc文件后面追加下面的内容。

之后使用 source ~/.bashrc 命令即可刷新环境变量

追加了上述环境变仔消芹量后即可全局执行hadoop和hdfs命令。

hdfs执行后有可能访问的还是本地的文件系统,这是因为配置错了。

配置/usr/local/hadoop/etc/hadoop/core-site.xml下的环境变量,使得hdfs可以链接到Docker集群的HDFS系统。

设置环境变量

Docker安装Hadoop

Docker、Java、Scala、Hadoop、 Hbase、Spark。

集群共有5台机器,主机名分别为 h01、h02、h03、h04、h05。其中 h01 为 master,其他的为 slave。

JDK 1.8、Scala 2.11.6、Hadoop 3.2.1、Hbase 2.1.3、Spark 2.4.0

wget -qO- | sh

sudo service docker start

sudo docker ps

现在的 Docker 网络能够提供 DNS 解析功手嫌悉能,使用如下命令为接下来的 Hadoop 集群单独构建一个虚拟的网络。

sudo docker network create --driver=bridge hadoop

以上命令创建了一个名为 Hadoop 的虚拟桥接网络,该虚拟网络内部提供了自动的DNS解析服务。## 查看 Docker 中的网络

sudo docker network ls

可以看到刚刚创建的名为 hadoop 的虚拟桥接网络。

sudo docker search ubuntu

sudo docker pull ubuntu:16.04

sudo docker run -it ubuntu:16.04 /bin/bash

可以看出 shell 已经是容器的 shell 了

exit

sudo docker ps -a

sudo docker start fab4da838c2f

sudo docker stop fab4da838c2f

在当前容器中将配置配好,导入出为镜像。以此镜像为基础创建五个容器,并赋予 hostname

进入 h01 容器,启动 Hadoop。

sudo docker exec -it fab4da838c2f /bin/bash

备份源

cp /etc/apt/sources.list /etc/apt/sources_init.list

先删除旧源文件

rm /etc/apt/sources.list

这个时候没有 vim 工具,使用 echo 命令将源写入新文件

apt update

apt install openjdk-8-jdk

测试

java -version

apt install scala

测试

scala

安装 vim,用来编辑文件

apt install vim

安装 net-tools

apt install net-tools

安装 SSH,并配置免密登录,由于后面的容器之间是由一个镜像启动的,所以在当前容器里配置 SSH 自身免密登录就 OK 了。

安装 SSH

apt-get install openssh-server

安装 SSH 的客户端

apt-get install openssh-client

进入当前用户的用户根目录

cd ~

生者备成密钥,一直回车就行

ssh-keygen -t rsa -P ""

生成的密钥在当前用户根目录下的 .ssh 文件夹中以 . 开头的文件与文件夹 ls 是看不懂的,需要 ls -al 才能查看。

将公钥追加到 authorized_keys 文件中

cat .ssh/id_rsa.pub .ssh/authorized_keys

启动 SSH 服务

service ssh start

免密登录自己

ssh 127.0.0.1

修改 .bashrc 文件,启动 shell 的时候,自动启动 SSH 服务

vim ~/.bashrc

添加一行

毕乎 service ssh start

wget

到 /usr/local 目录下面并重命名文件夹

tar -zxvf hadoop-3.2.1.tar.gz -C /usr/local/

cd /usr/local/

mv hadoop-3.2.1 hadoop

vim /etc/profile

追加以下内容,JAVA_HOME 为 JDK 安装路径,使用 apt 安装就是这个,用 update-alternatives --config java 可查看

使环境变量生效

source /etc/profile

在目录 /usr/local/hadoop/etc/hadoop 下,修改 hadoop-env.sh 文件,在文件末尾添加以下信息

cd /usr/local/hadoop/etc/hadoop

vim hadoop-env.sh

修改 core-site.xml,修改为

vim core-site.xml

chmod 777 /home/hadoop3/hadoop/tmp

修改 hdfs-site.xml,修改为

vim hdfs-site.xml

修改 mapred-site.xml,修改为

vim mapred-site.xml

修改 yarn-site.xml,修改为

vim yarn-site.xml

修改 worker 为

vim workers

此时,hadoop已经配置好了

exit

sudo docker commit -m "hadoop" -a "tomding" fab4da838c2f newuhadoop

查看镜像

sudo docker images

启动 h01 做 master 节点,所以暴露了端口,以供访问 web 页面,--network hadoop 参数是将当前容器加入到名为 hadoop 的虚拟桥接网络中,此网站提供自动的 DNS 解析功能

sudo docker run -it --network hadoop -h "h01" --name "h01" -p 9870:9870 -p 8088:8088 newuhadoop /bin/bash

sudo docker run -it --network hadoop -h "h02" --name "h02" newuhadoop /bin/bash

sudo docker run -it --network hadoop -h "h03" --name "h03" newuhadoop /bin/bash

sudo docker run -it --network hadoop -h "h04" --name "h04" newuhadoop /bin/bash

sudo docker run -it --network hadoop -h "h05" --name "h05" newuhadoop /bin/bash

先进行格式化操作,不格式化操作,hdfs会起不来

cd /usr/local/hadoop/bin

./hadoop namenode -format

进入 hadoop 的 sbin 目录

cd /usr/local/hadoop/sbin/

启动

./start-all.sh

查看分布式文件系统的状态

cd /usr/local/hadoop/bin

./hadoop dfsadmin -report

把license作为需要统计的文件

cd /usr/local/hadoop

cat LICENSE.txt file1.txt

在 HDFS 中创建 input 文件夹

cd /usr/local/hadoop/bin

./hadoop fs -mkdir /input

上传 file1.txt 文件到 HDFS 中

./hadoop fs -put ../file1.txt /input

查看 HDFS 中 input 文件夹里的内容

./hadoop fs -ls /input

运作 wordcount 例子程序

./hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output

查看 HDFS 中的 /output 文件夹的内容

./hadoop fs -ls /output

查看 part-r-00000 文件的内容

./hadoop fs -cat /output/part-r-00000

Hadoop 部分结束了

在 Hadoop 集群的基础上安装 Hbase

root@h01:~# wget

到 /usr/local 目录下面

tar -zxvf hbase-2.1.3-bin.tar.gz -C /usr/local/

vim /etc/profile

source /etc/profile

使用 ssh h02/3/4/5 进入其他四个容器,依次在 /etc/profile 文件后追加那两行环境变量

在目录 /usr/local/hbase-2.1.3/conf 修改配置

cd /usr/local/hbase-2.1.3/conf

修改 hbase-env.sh,追加

vim hbase-env.sh

修改 hbase-site.xml 为

vim hbase-site.xml

修改 regionservers 文件为

vim regionservers

使用 scp 命令将配置好的 Hbase 复制到其他 4 个容器中

scp -r /usr/local/hbase-2.1.3 root@h02:/usr/local/

scp -r /usr/local/hbase-2.1.3 root@h03:/usr/local/

scp -r /usr/local/hbase-2.1.3 root@h04:/usr/local/

scp -r /usr/local/hbase-2.1.3 root@h05:/usr/local/

cd /usr/local/hbase-2.1.3/bin

./start-hbase.sh

打开 Hbase 的 shell

hbase shell

在 Hadoop 的基础上安装 Spark

wget

到 /usr/local 目录下面

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz -C /usr/local/

修改文件夹的名字

cd /usr/local/

mv spark-2.4.0-bin-hadoop2.7 spark-2.4.0

vim /etc/profile

source /etc/profile

使用 ssh h02/3/4/5 可进入其他四个容器,依次在 /etc/profile 文件后追加那两行环境变量

在目录 /usr/local/spark-2.4.0/conf 修改配置

cd /usr/local/spark-2.4.0/conf

修改文件名

mv spark-env.sh.template spark-env.sh

修改 spark-env.sh,追加

vim spark-env.sh

修改文件名

mv slaves.template slaves

修改 slaves 如下

vim slaves

使用 scp 命令将配置好的 Hbase 复制到其他 4 个容器中

scp -r /usr/local/spark-2.4.0 root@h02:/usr/local/

scp -r /usr/local/spark-2.4.0 root@h03:/usr/local/

scp -r /usr/local/spark-2.4.0 root@h04:/usr/local/

scp -r /usr/local/spark-2.4.0 root@h05:/usr/local/

cd /usr/local/spark-2.4.0/sbin

./start-all.sh

其他

3.1 HDFS 重格式化问题

参考

重新格式化意味着集群的数据会被全部删除,格式化前需考虑数据备份或转移问题 ;

先删除主节点(即namenode节点),Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录);

删除所有数据节点(即datanode节点) ,Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容;

格式化一个新的分布式文件系统:

cd /usr/local/hadoop/bin

./hadoop namenode -format

注意事项

进入:

sudo docker run -it --network hadoop -h "h01" --name "h01" -p 9870:9870 -p 8088:8088 master /bin/bash

sudo docker run -it --network hadoop -h "h02" --name "h02" slave1 /bin/bash

sudo docker run -it --network hadoop -h "h03" --name "h03" slave2 /bin/bash

sudo docker run -it --network hadoop -h "h04" --name "h04" slave3 /bin/bash

sudo docker run -it --network hadoop -h "h05" --name "h05" slave14 /bin/bash

退出:

sudo docker commit -m "master" -a "tomding" h01 master

sudo docker commit -m "slave1" -a "tomding" h02 slave1

sudo docker commit -m "slave2" -a "tomding" h03 slave2

sudo docker commit -m "slave3" -a "tomding" h04 slave3

sudo docker commit -m "slave4" -a "tomding" h05 slave4

用docker搭建hadoop有什么作用

虚拟构建。docker构建是一种虚漏培拟软蔽粗件,使用docker搭建hadoop可以虚拟构建的作用,对构建进行预先模拟。防止构建的时候出现错误宏搜镇。

[img]

关于dockerhadoop和dockerhadoop集群的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表