(转)基于Docker搭建Hadoop+Hive

docker搭建hadoop和hive集群 Dockfile文件的内容解释:基于centos镜像,生成带有spenssh-server、openssh-clients的镜像,用户为root,密码为a123456,镜像维护者(作者)为hadoop。因为集群的服务器之间需要通信,而且每次虚拟机给集群分配的ip地址都不一样,所以需要创建网桥,给每台服务器分配固定的ip映射,这样就可以通过使用服务器名进行通信了,而且ip地址也不会变动。MAINTAINER+空格+作者的信息,用于指定镜像作者的信息,我的用户名是hadoop,改成你自己的。 阅读详情

本篇内容全部转自https://zhuanlan.zhihu.com/p/242658224,自己只做了少量的补充

跟着这篇教程做的时候,遇到的问题都记录在https://mp.youkuaiyun.com/mp_blog/creation/editor/117879415这里面

本次使用的各版本配置如下:

  • Docker 19.03.8
  • JDK 1.8
  • Hadoop 3.2.0
  • Hive 3.1.2
  • mysql 8.0.1
  • mysql-connector-java-5.1.49.jar
  • hive_jdbc_2.5.15.1040

Hadoop部分:

一、拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base

二、运行容器

进入容器看worker里面有三台机子,分别是Master、Slave1、Slave2

关于worker路径,通过etc/profile环境变量配置的文件即可查看hadoop安装目录
#随意建立个容器查看配置情况
docker run -it --name hadopp-test registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base
#查看系统变量路径
vim etc/profile
#查看worker情况
vim /usr/local/hadoop/etc/hadoop/workers
  • 建立hadoop用的内部网络
#指定固定ip号段
docker network create --driver=bridge --subnet=172.19.0.0/16  hadoop
  • 建立Master容器,映射端口

10000端口为hiveserver2端口,后面本地客户端要通过beeline连接hive使用,有其他组件要安装的话可以提前把端口都映射出来,毕竟后面容器运行后再添加端口还是有点麻烦的

docker run -it --network hadoop -h Master --name Master -p 9870:9870 -p 8088:8088 -p 10000:10000 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
  • 创建Slave1容器
docker run -it --network hadoop -h Slave1 --name Slave1 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
  • 创建Slave2容器
docker run -it --network hadoop -h Slave2 --name Slave2 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
  • 三台机器,都修改host vim /etc/hosts
172.20.0.4	Master
172.20.0.3	Slave1
172.20.0.2	Slave2

三、启动hadoop

虽然容器里面已经把hadoop路径配置在系统变量里面,但每次进入需要运行source /etc/profile才能生效使用

  • 进入master,启动hadoop,先格式化hdfs
#进入Master容器
docker exec -it Master bash
#进入后格式化hdfs
root@Master:/# hadoop namenode -format
  • 启动全部,包含hdfs和yarn
root@Master:/usr/local/hadoop/sbin# ./start-all.sh
可以看到服务起来了,本地范围宿主机ip的8088及9870端口可以看到监控信息
Starting namenodes on [Master]
Master: Warning: Permanently added 'master,172.19.0.4' (ECDSA) to the list of known hosts.
Starting datanodes
Slave1: Warning: Permanently added 'slave1,172.19.0.3' (ECDSA) to the list of known hosts.
Slave2: Warning: Permanently added 'slave2,172.19.0.2' (ECDSA) to the list of known hosts.
Slave1: WARNING: /usr/local/hadoop/logs does not exist. Creating.
Slave2: WARNING: /usr/local/hadoop/logs does not exist. Creating.
Starting secondary namenodes [Master]
Starting resourcemanager
Starting nodemanagers

查看分布式文件系统状态
root@Master:/usr/local/hadoop/sbin# hdfs dfsadmin -report

四、运行内置WordCount例子

把license作为需要统计的文件

root@Master:/usr/local/hadoop# cat LICENSE.txt > file1.txt
root@Master:/usr/local/hadoop# ls
LICENSE.txt  NOTICE.txt  README.txt  bin  etc  file1.txt  include  lib  libexec  logs  sbin  share

在 HDFS 中创建 input 文件夹

root@Master:/usr/local/hadoop# hadoop fs -mkdir /input

上传 file1.txt 文件到 HDFS 中

root@Master:/usr/local/hadoop# hadoop fs -put file1.txt /input
2020-09-14 11:02:01,183 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false

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

root@Master:/usr/local/hadoop# hadoop fs -ls /input
Found 1 items
-rw-r--r--   2 root supergroup     150569 2020-09-14 11:02 /input/file1.txt

运作 wordcount 例子程序

root@Master:/usr/local/hadoop# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output

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

root@Master:/usr/local/hadoop# hadoop fs -ls /output
Found 2 items
-rw-r--r--   2 root supergroup          0 2020-09-14 11:09 /output/_SUCCESS
-rw-r--r--   2 root supergroup      35324 2020-09-14 11:09 /output/part-r-00000

查看part-r-00000文件的内容,就是运行的结果

root@Master:/usr/local/hadoop# hadoop fs -cat /output/part-r-00000

Hadoop 部分结束了


HIVE部分:

Hive下载后上传到容器目录下:

下载地址:Index of /apache/hive/hive-3.1.2

一、解压安装包

# 拷贝安装包进Master容器
docker cp apache-hive-3.1.2-bin.tar.gz Master:/usr/local
# 进入容器
docker exec -it Master bash
cd /usr/local/
# 解压安装包
tar xvf apache-hive-3.1.2-bin.tar.gz

二、修改配置文件

root@Master:/usr/local/apache-hive-3.1.2-bin/conf# cp hive-default.xml.template hive-site.xml
root@Master:/usr/local/apache-hive-3.1.2-bin/conf# vim hive-site.xml

在最前面添加下面配置:

  <property>
    <name>system:java.io.tmpdir</name>
    <value>/tmp/hive/java</value>
  </property>
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>

三、配置Hive相关环境变量

vim /etc/profile

#文本最后添加
export HIVE_HOME="/usr/local/apache-hive-3.1.2-bin"
export PATH=$PATH:$HIVE_HOME/bin 

配置后执行source /etc/profile 生效

source /etc/profile

四、配置mysql作为元数据库

1.拉取Mysql镜像并生产容器:

#拉取镜像
docker pull mysql:8:0.18
#建立容器
docker run --name mysql_hive -p 4306:3306 --net hadoop --ip 172.19.0.5 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:8.0.18
#进入容器
docker exec -it mysql_hive bash
#进入myslq
mysql -uroot -p
#密码上面建立容器时候已经设置abc123456
#建立hive数据库
create database hive;
#修改远程连接权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123456';

ps:容器ip地址类似window的分配机制,如果不设置固定ip容器重启后会自动分配ip,因此数据库相关的容器建议设置为固定ip。

2.回去Master容器,修改关联数据库的配置

docker exec -it Master bash
vim /usr/local/apache-hive-3.1.2-bin/conf/hive-site.xml

搜索关键词修改数据库url、驱动、用户名,url根据上面建容器时候地址。

  #还请注意hive配置文件里面使用&amp;作为分隔,高版本myssql需要SSL验证,在这里设置关闭
  <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>abc123456</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://172.19.0.5:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
    <value>false</value>
    <property>

3.mysql驱动上传到hive的lib下

#前面已经跟hive安装包一起上传到容器/usr/local目录
root@Master:/usr/local# cp mysql-connector-java-5.1.49.jar /usr/local/apache-hive-3.1.2-bin/lib

4.jar包配置修改

对hive的lib文件夹下的部分文件做修改,不然初始化数据库的时候会报错

#slf4j这个包hadoop及hive两边只能有一个,这里删掉hive这边
root@Master:/usr/local/apache-hive-3.1.2-bin/lib# rm log4j-slf4j-impl-2.10.0.jar

#guava这个包hadoop及hive两边只删掉版本低的那个,把版本高的复制过去,这里删掉hive,复制hadoop的过去
root@Master:/usr/local/hadoop/share/hadoop/common/lib# cp guava-27.0-jre.jar /usr/local/apache-hive-3.1.2-bin/lib
root@Master:/usr/local/hadoop/share/hadoop/common/lib# rm /usr/local/apache-hive-3.1.2-bin/lib/guava-19.0.jar

#把文件hive-site.xml第3225行的特殊字符删除
root@Master: vim /usr/local/apache-hive-3.1.2-bin/conf/hive-site.xml

五、初始化元数据库

root@Master:/usr/local/apache-hive-3.1.2-bin/bin# schematool -initSchema -dbType mysql

成功后提示:

Metastore connection URL:        jdbc:mysql://172.19.0.5:3306/hive?createDatabaseIfNotExist=true&useSSL=false
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:       root
Starting metastore schema initialization to 3.1.0
Initialization script hive-schema-3.1.0.mysql.sql
Initialization script completed
schemaTool completed

六、验证

  • 我们先创建一个数据文件放到/usr/local下
cd /usr/local
vim test.txt
1,jack
2,hel
3,nack
  • 进入hive交互界面
root@Master:/usr/local# hive
Hive Session ID = 7bec2ab6-e06d-4dff-8d53-a64611875aeb

Logging initialized using configuration in jar:file:/usr/local/apache-hive-3.1.2-bin/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = 5cdee915-5c95-4834-bd3b-bec6f3d90e5b
hive> create table test(
    >     id      int
    >    ,name    string
    > )
    > row format delimited
    > fields terminated by ',';
OK
Time taken: 1.453 seconds
hive> load data local inpath '/usr/local/test.txt' into table test;
Loading data to table default.test
OK
Time taken: 0.63 seconds
hive> select * from test;
OK
1       jack
2       hel
3       nack
Time taken: 1.611 seconds, Fetched: 3 row(s)

hive安装完毕

docker 安装hive 想练练Hive SQL,但是没有hive shell环境。现在只有一台空的CentOS 7机子,一想要弄jdk、hadoop、mysql、hive就头疼。于是在网上找了找,发现用docker部署hive会快很多,在此记录一下部署过程。以下过程每一步在文末都附有参考文档,出错的朋友可以去看对应的参考文档。 阅读详情

相关推荐

使用docker快速搭建hive环境

记录一下使用docker快速搭建部署hive环境

upupfeng的博客 4115

通过 docker-compose 快速部署 Hive 详细教程

其实通过 docker-compose 部署 hive 是在继上篇文章 Hadoop 部署的基础之上叠加的,Hive 做为最常用的数仓服务,所以是有必要进行集成的,感兴趣的小伙伴请认真阅读我以下内容,通过 docker-compose 部署的服务主要是用最少的资源和时间成本快速部署服务,方便小伙伴学习、测试、验证功能等等~通过 docker-compose 快速部署 Hadoop 集群详细教程通过 docker-compose 快速部署 Hadoop 集群极简教程。

匠人精神,持之以恒! 3526

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

本文介绍了在Windows11/WSL2环境下使用Docker和Docker Compose搭建大数据开发环境的完整流程。通过分步构建基础镜像和HBase/Hive/Spark镜像,配置ZooKeeper、PostgreSQL、HDFS等核心服务,并验证各服务运行状态。项目包含服务依赖管理、容器配置、初始化脚本以及Web UI访问验证,提供了一套完整的大数据开发环境搭建方案。特别说明了Spark客户端的配置方法和服务验证顺序,确保各组件协同工作。

小谷的博客 3191

基于Docker 安装的MySql 来安装Hive

基于docker 安装的mysql 来安装 hive

m0_49683806的博客 3803

Docker部署Hadoop环境+Hive

获取centos7镜像 $ docker pull centos Output: 查看镜像列表的命令 $ docker images Output: 安装SSH 以centos7镜像为基础,构建一个带有SSH功能的centos $ vi Dockerfile 内容: 大意是:以 centos 镜像为基础,安装SSH的相关包,设置了root用户的密码为 pass,并启动SSH服务 FROM...

進撃の算法 2986

使用docker搭建Hadoop

Hadoop简介 1、Hadoop的整体框架 Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成,其中最基础最重要元素为底层用于存储集群中所有存储节点文件的文件系统HDFS(Hadoop Distributed File System)来执行MapReduce程序的MapReduce引擎。 (1)Pig是一个基于Hadoop的大规模数据分析平台,Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口; (2)Hive是基于Hadoop的一个工具,提供完整的

tian1345的博客 7911

基于Docker搭建Hadoop+Hive

为配合生产hadoop使用,在本地搭建测试环境,使用docker环境实现(主要是省事~),拉取阿里云已有hadoop镜像基础上,安装hive组件,参考下面两个专栏文章: 克里斯:基于 Docker 构建 Hadoop 平台docker上从零开始搭建hadoop和hive环境 由于hadoop与hive等存在版本兼容问题,安装前可以先通过官网确认版本兼容情况: http://hive.apache.org/downloads.html 本次使用的各版本配置如下: Docker 19.03.8 JD

There is no one l would rather be than me 3270

基于docker搭建hadoop+spark+hive+hbase集群的过程

目录 1.安装docker 1.1.安装docker 1.2.更改为公司本地镜像源,或者阿里镜像源 1.3.设置为默认启动 1.4.重启docker,测试hello-world 1.5.安装docker-compose 1.6.关闭selinux 1.7下载各种安装包 2.安装centos+jdk镜像 3.安装hadoop...

阿啄debugIT 3291

使用 Docker 搭建 Hadoop + Hive + Spark 集群

本文探讨了使用 Docker 搭建 Hadoop + Hive + Spark 集群的方法,项目地址在此。在阅读本文前,建议先对 Docker 以及 Docker Compose 有基本的了解。 准备工作 本项目基于Docker和Docker Compose,搭建的集群包含以下部分: Hadoop Hive Spark 本项目参考了Big Data Europe的一些工作。项目中所使用的 Docker 镜像可能会被更新,可以参看他们的Docker Hub以获取最新镜像。 本...

0x8g1T9E- 5367

基于docker容器,快速搭建hadoop+spark+hive+hbase集群的详细过程记录

1.安装docker 参考:https://blog.youkuaiyun.com/as4589sd/article/details/104140244 1.1.安装docker yum update -y yum -y install docker systemctl start docker 1.2.更改为公司本地镜像源,或者阿里镜像源 vi /etc/docker/daemon.j...

阿啄debugIT 2604

使用 docker 一键搭建 hadoop,hbase, hive 等大数据集群

注意 资源的下载地址: 链接: https://pan.baidu.com/s/1YSqC59v1djKamLBrfr9L2g 密码: wrs2 有问题联系我:lizhenchao@atguigu.cn 目录说明 不要更改docker_bigdata及子目录的目录结构 进入到docker_bigdata目录下再执行脚本 镜像构建说明 build_all.sh 可以构建需要用到的所有镜像, 运行的时候, 根据自己的需要选择需要构建的镜像,最后会创建 3 个容器 hadoop162, hadoop163

完善飞跃 3980

dokcer搭建单机hadoop和hive

dokcer搭建单机hadoop和hivedokcer搭建单机hadoop和hive1. dokcer搭建单机hadoop1.1 基础容器构建1.2 Hadoop 安装1.3 HDFS 配置和启动1.4 启动 HDFS1.5 HDFS 使用2 hive安装2.1 安装和配置MySQL(5.7.27版本)2.2 安装hive2.3 初始化和启动hive验证总结 dokcer搭建单机hadoop和hive 1. dokcer搭建单机hadoop 1.1 基础容器构建 参考:https://www.runoob.

李习的博客 1559

基于centos7搭建haoop与hive

centos7搭建hadoop

congge_study的博客 7915

基于docker搭建Hadoop 3.3 hive3.1.2 Mysql 8.0.24 环境

致读者: 博主是一名数据科学与大数据专业大三的学生,一个互联网新人,写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者。 由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!之后会写大数据专业的文章哦。 GitHub链接https://github.com/wfy-belief 尽管现在我的水平可能还不太及格,但我会尽我自己所能,做到最好☺ ——天地有正气,杂然赋流形。下则为河岳,上则为日星。 需求: 因为最近准备学习hive.

ZZULI_星.夜 3275

docker-compose安装Hadoop+hive+MySQL

首先特别感谢参考的博客,感谢作者Victor_python是你指明了我探索的道路,让我能顺利完成本博客的内容 参考连接:docker下安装hive 2.3.4 Hadoop: v2.7.3 hive: v2.3.7 mysql: v5.7 mysql-connector-java: v5.1.49 mysql-connector-java下载地址: mysql-connector-java 如果上述地址无法下载,也可以到我的百度网盘下载 百度网盘链接:点击直达 提取码:nv7j Hadoop和

u010948569的博客 3095

Docker 容器部署Hadoop/Hive单机测试环境

部署docker(参考docker部署文档)组件名版本号包完整名java1.8jdk-8u431-linux-x64.tar.gzhadoop3.3.6hadoop-3.3.6.tar.gzhive3.1.2apache-hive-3.1.2-bin.tar.gzmysql5.7.44mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz下载上述相关组件部署包放在宿主机的/opt目录下下载centos基础镜像 将需要部署的组价由宿主机上传到centos7容器中的/opt

m0_61433817的博客 1262

hadoop端口_基于Docker搭建Hadoop+Hive

为配合生产hadoop使用,在本地搭建测试环境,使用docker环境实现(主要是省事~),拉取阿里云已有hadoop镜像基础上,安装hive组件,参考下面两个专栏文章:克里斯:基于 Docker 构建 Hadoop 平台docker上从零开始搭建hadoop和hive环境由于hadoop与hive等存在版本兼容问题,安装前可以先通过官网确认版本兼容情况:http://hive.apache.org...

weixin_39760433的博客 574

VerilogEval实战指南:从基准测试到模型微调的全流程解析

本文提供了VerilogEval实战指南,详细解析了从基准测试到模型微调的全流程。VerilogEval是一个自动化、标准化的测试框架,用于客观评估大语言模型生成Verilog硬件代码的能力。文章涵盖了环境搭建、核心机制解析、利用其生成合成数据进行模型微调的策略,以及如何将其工程化集成到自动化评估流程中,为硬件设计领域的AI应用提供了完整的方法论。

yy01234的博客 1005

基于docker快速搭建hive环境

一、概述 Hive是什么? Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。 最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。它用在好多不同的公司。例如,亚马逊使用它在 Amazon Elastic MapReduce...

shykevin的博客 2232

HTB_Bike靶机之模板注入

船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.

网络安全学习 797

真格量化——GFTD策略

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import numpy as np import math #开始时间,用于初始化一些参数 def OnStart(context) : print "I\'m starting..." #设置全局变量 g.signalcount = 0 g.signal_list = [] g.buysignal = 0 .

qq_26742269的博客 1284
上一篇: hadoop的SecondaryNameNode
下一篇: 基于Docker实现OpenResty连接Redis
AAA821
博客等级 码龄14年 19粉丝 58原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值