搭建Hudi Docker Demo for Centos7【避坑版】

现在项目组那边要搞数据入湖,但只有一个正式环境,怕被我truncate数据了,不肯给服务器!因此搭建一个hudi用于自己研究学习。

centos7虚拟机安装

在虚拟机搭建一台centos7虚拟机(自己研究一下吧,内存给8g,docker需要6g来运行hudi服务)

准备工作

演示通过主机名引用容器中运行的许多服务。将以下设置添加到/etc/hosts

127.0.0.1 adhoc-1
127.0.0.1 adhoc-2
127.0.0.1 namenode
127.0.0.1 datanode1
127.0.0.1 hiveserver
127.0.0.1 hivemetastore
127.0.0.1 kafkabroker
127.0.0.1 sparkmaster
127.0.0.1 zookeeper

安装所需程序

java8

第一个是java8,其实centos7自带java8的,但只有一个jre,而部署hudi需要jdk,所以需要安装jdk。但使用yum安装jdk的话,在环境变量配置上面会有很大麻烦(使用which java找到java8在bin\java上,然后是软连接,就慢慢cd切换目录找),所以,还是少一点折腾,这里使用尚硅谷的java安装方式。

# 下载基本工具
yum install -y epel-release
yum install -y net-tools 
yum install -y vim

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service

# 删除自带的java
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 

上传java安装包到虚拟机上面

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/software

打开/etc/profile文件,在最下面写入以下内容

vim /etc/profile

内容如下:

export MAVEN_HOME=/usr/local/apache-maven-3.8.1/
export PATH=${PATH}:${MAVEN_HOME}/bin
export JAVA_HOME=/opt/software/jdk1.8.0_212
export PATH=${PATH}:${JAVA_HOME}/bin
export SCALA_HOME=/opt/software/scala-2.11.12
export PATH=$PATH:$SCALA_HOME/bin

配置完成后,执行source /etc/profile命令,使配置生效。

运行java -version,终端打印如下信息:

[root@localhost ~]# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

maven

第二个是maven,这里为什么要下载maven,因为hudi只能通过java源码编译的,所以需要maven进行源码构建,在这里可以直接命令行下载maven了,没有什么坑。

这里采用华为云的maven镜像,下载3.8.1版本,下载完成后,解压到/usr/local/目录下,并重命名为apache-maven

wget https://repo.huaweicloud.com/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
tar -zxvf apache-maven-3.8.1-bin.tar.gz
mv apache-maven-3.8.1 /usr/local/

查看一下是否安装成功

mvn -verison

出现如下信息即可:

[root@localhost ~]# mvn -version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/apache-maven-3.8.1
Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /opt/software/jdk1.8.0_212/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

配置一下镜像源和本地镜像仓库

vim /usr/local/apache-maven-3.8.1/conf/settings.xml 

添加如下内容:

<localRepository>/usr/local/apache-maven-3.8.1/repository</localRepository>
  <mirrors>
    <mirror>
      <id>aliyunCentralMaven</id>
      <name>aliyun central maven</name>
      <url>https://maven.aliyun.com/repository/central/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>centralMaven</id>
      <name>central maven</name>
      <url>http://mvnrepository.com/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>

scala

第三个是scala的安装,好奇?为什么要安装scala?因为hudi、spark的源码编译需要scala,所以需要安装scala。

这里下载2.11.12版本,下载完成后,解压到/opt/software目录下.

wget https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz
tar -zxvf scala-2.11.12.tgz -C /opt/software

通过scala -version验证一下是否安装成功:

[root@localhost ~]# scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

git

git是因为hudi源码下载需要,这里直接使用yum安装即可。(如果网络不好,在Github下载zip文件,unzip解压也行)

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc-c++ perl-ExtUtils-MakeMaker
yum install git
git --version

输出git version 1.8.3.1

配置信息:

# 创建一个github仓库
mkdir /opt/github
cd /opt/github/

# 初始化
git init

# 配置用户名和邮箱
git config user.name "用户名"
git config user.emial "邮箱"

ssh远程连接

这里自己找ssh远程连接的文档,不多写了。
简单来,systemctl start sshd打开ssh服务,ifconfig获取ens33网卡ip4信息,使用xshell连接虚拟机,输入ip4地址和root用户名密码即可。

相关链接:

https://blog.csdn.net/weixin_38924500/article/details/106783645 (Centos7安装、配置SSH服务远程登录)

https://blog.csdn.net/qq_45101279/article/details/112799091 (ens33网卡配置静态ip)

hudi

参考了这两篇:

https://hudi.apache.org/docs/0.14.0/docker_demo/ (官方文档)

https://blog.csdn.net/yang_shibiao/article/details/123077266 (centos7使用docker进行Hudi的快速体验和使用)

将Hudi存储库克隆到本地机器

GitHub地址:https://github.com/apache/hudi

这里我选用了0.14.0版本

git clone https://github.com/apache/hudi.git

网络不行,下载zip包,解压到/opt/github目录下。

[root@localhost hudi-release-0.14.0]# pwd
/opt/github/hudi-release-0.14.0

进入目录里面进行编译,使用官网的mvn命令可能有编译错误,有一些包报错。这里改了一下。

mvn package -DskipTests

这里很慢,第一次编译要一个小时多吧。出现BUILD SUCCESS即可。

安装docker和docker-compose

这里安装最新版的,旧版在pull镜像时可能出现missing signature key错误。

# 准备工作,更新docker镜像源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum update -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker
yum -y remove docker*
yum install docker-ce docker-ce-cli containerd.io

# 安装docker-compose
cd /usr/local/bin
wget https://github.com/docker/compose/releases/download/v2.24.0-birthday.10/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 docker-compose
chmod +x docker-compose 

查看安装情况:

docker version
docker-compose version

重点!配置docker镜像源,不然拉取镜像很慢,天天出问题,超时、拒绝连接、没有镜像等等。

先配置阿里云的镜像,参考文章如下:
https://blog.csdn.net/angellee1988/article/details/105468058

vim /etc/docker/daemon.json

然后加上我这里的镜像资源:

{
  "registry-mirrors": [
    "https://mpoqfnbe.mirror.aliyuncs.com",
    "https://docker.888666222.xyz",
    "https://atomhub.openatom.cn/",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://reg-mirror.qiniu.com",
    "https://docker.rainbond.cc"
  ]
}

更新配置:

systemctl daemon-reload
systemctl restart docker

可以使用docker info验证一下。

hudi容器拉取

进入hudi工作目录下的docker目录,运行setup_demo.sh脚本

[root@localhost docker]# pwd
/opt/github/hudi-release-0.14.0/docker
[root@localhost docker]# ll
total 40
-rwxr-xr-x. 1 root root  1316 Sep 27  2023 build_local_docker_images.sh
drwxr-xr-x. 2 root root   142 Sep 27  2023 compose
drwxr-xr-x. 4 root root  4096 Sep 27  2023 demo
-rwxr-xr-x. 1 root root 11986 Sep 27  2023 generate_test_suite.sh
drwxr-xr-x. 3 root root    20 Sep 27  2023 hoodie
drwxr-xr-x. 2 root root    36 Sep 27  2023 images
-rw-r--r--. 1 root root  9685 Sep 27  2023 README.md
-rwxr-xr-x. 1 root root  1640 Sep 27  2023 setup_demo.sh
-rwxr-xr-x. 1 root root  1301 Sep 27  2023 stop_demo.sh
[root@localhost docker]# sh setup_demo.sh 

出现20个容器启动即可,这里也是很慢,慢慢等待~

[+] Running 20/20
 ✔ Network hudi                                Created                                                  0.1s 
 ✔ Volume "compose_historyserver"              Created                                                  0.0s 
 ✔ Volume "compose_hive-metastore-postgresql"  Created                                                  0.0s 
 ✔ Container namenode                          Started                                                  0.2s 
 ✔ Container hive-metastore-postgresql         Started                                                  0.2s 
 ✔ Container kafkabroker                       Started                                                  0.2s 
 ✔ Container zookeeper                         Started                                                  0.2s 
 ✔ Container graphite                          Started                                                  0.3s 
 ✔ Container historyserver                     Started                                                  0.1s 
 ✔ Container hivemetastore                     Started                                                  0.1s 
 ✔ Container datanode1                         Started                                                  0.1s 
 ✔ Container trino-coordinator-1               Started                                                  0.1s 
 ✔ Container presto-coordinator-1              Started                                                  0.1s 
 ✔ Container hiveserver                        Started                                                  0.1s 
 ✔ Container sparkmaster                       Started                                                  0.1s 
 ✔ Container trino-worker-1                    Started                                                  0.1s 
 ✔ Container presto-worker-1                   Started                                                  0.1s 
 ✔ Container adhoc-1                           Started                                                  0.2s 
 ✔ Container spark-worker-1                    Started                                                  0.2s 
 ✔ Container adhoc-2                           Started                                                  0.2s 
Copying spark default config and setting up configs
Copying spark default config and setting up configs

到这里,hudi demo is ready!

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值