Ubuntu Kylin 上如何用 bcache 实现 SSD 缓存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu Kylin 上如何用 bcache 实现 SSD 缓存相关的知识,希望对你有一定的参考价值。
参考技术A 最近在台式机上装 Ubuntu Kylin 18.04,台式机有个机械硬盘,感觉用起来很慢,就找了块旧的 128G 的 SSD,想提升一下速度。但毕竟 128G 的盘比较小,于是就想能不能那它做高速缓存,给那个大的机械硬盘提速。简单查了一下网上的资料,有几个不同的方案,其中 bcache 的方案相对比较成熟,操作上也比较简单,于是就开干。
刚开始,手工做了磁盘分区,然后把 /dev/bcache0 作为根目录来挂载,安装完毕后,系统无法正常启动,于是又查了资料,原来 grub2 并不支持以 bcache 的块类型作为根分区。几番尝试无果后,只好换用其它方案。最终用 LVM 的方案调试成功,下面简单记录方法。
以下命令均需使用 root 身份执行。
选择手工的安装方式,指定 /dev/sda1 为 /boot,/dev/kylin/system 为 /,安装完毕后重启。
将 /dev/sda2 作为存储数据的盘,将 /dev/sdb2 作为缓存。
目的是把之前的 pv 移除,让整个 vg 基于 bcache 运行。
把系统盘从 8G 扩为 100G
以上步骤完成后,重启系统。
在Ubuntu20.04安装Kylin4 On Docker并在DataGrip配置JDBC协议连接容器内Hive1.2.1及Kylin4.0.0
在Ubuntu20.04安装Kylin4 On Docker
前言
最近要迁移老的Kylin任务,特意温习下Kylin。2021年我们已经有十几台机器的Kylin4.0独立集群了,2022年当然也没必要再去部署3.0。还是本着方便挂起虚拟机的原则,单节点部署。
Apache Kylin中文官网:https://kylin.apache.org/cn/
由于Kylin对其它组件依赖比较多,尽管Kylin4.0使用Parquet存储替换了HBase,但部署时还是对版本等有要求。自己玩玩,使用最方便的当然还是Docker方式。
Docker方式安装Kylin4.0参考资料
官网文档:https://kylin.apache.org/cn/docs/install/kylin_docker.html
Docker仓库:https://hub.docker.com/r/apachekylin/apache-kylin-standalone
后续主要根据这2个网址操作。
虚拟机准备
官网有写:为了让 Kylin 能够顺畅的构建 Cube,我们为 Yarn NodeManager 配置的内存资源为 6G,加上各服务占用的内存,请保证容器的内存不少于 8G,以免因为内存不足导致出错。
可以看出Kylin哪怕是单节点安装,且运行在Docker这种非常节省资源的环境,对硬件的配置也有底线。
考虑到这个虚拟机后续可以搞搞SuperSet On Docker、Alluxio On Docker等玩法,该虚拟机分配的资源稍阔绰些:
CPU:12C
内存:24G
硬盘:300G
基础网络
轻车熟路,参照:https://lizhiyong.blog.csdn.net/article/details/126236516
静态IP:192.168.88.23
子网掩码:255.255.255.0
网关:192.168.88.2
DNS:8.8.8.8
禁用IPV6。
更换源
不一定每次都指定阿里云。。。自动选个速度最快的即可。
安装必要命令
sudo apt-get install net-tools
sudo apt-get install openssh-server
sudo apt-get install openssh-client
sudo apt install vim
之后可以使用MobaXterm连接:
zhiyong@zhiyong-docker:~$ hostname
zhiyong-docker
zhiyong@zhiyong-docker:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.88.23 netmask 255.255.255.0 broadcast 192.168.88.255
inet6 fe80::20c:29ff:fe35:119b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:35:11:9b txqueuelen 1000 (以太网)
RX packets 79777 bytes 115214183 (115.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13454 bytes 1001649 (1.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 3583 bytes 324764 (324.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3583 bytes 324764 (324.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
zhiyong@zhiyong-docker:~$ free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 24007 1063 21506 2 1436 22591
交换: 2047 0 2047
安装Docker
参照之前使用Docker的笔记:lizhiyong.blog.csdn.net/article/details/125055761
zhiyong@zhiyong-docker:~$ docker
Command 'docker' not found, but can be installed with:
sudo apt install docker.io
zhiyong@zhiyong-docker:~$ sudo apt install docker.io
[sudo] zhiyong 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
bridge-utils containerd git git-man liberror-perl pigz runc ubuntu-fan
建议安装:
ifupdown aufs-tools btrfs-progs cgroupfs-mount | cgroup-lite debootstrap docker-doc rinse zfs-fuse | zfsutils git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs
git-mediawiki git-svn
下列【新】软件包将被安装:
bridge-utils containerd docker.io git git-man liberror-perl pigz runc ubuntu-fan
升级了 0 个软件包,新安装了 9 个软件包,要卸载 0 个软件包,有 303 个软件包未被升级。
需要下载 74.3 MB 的归档。
解压缩后会消耗 372 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://ftp.sjtu.edu.cn/ubuntu focal/universe amd64 pigz amd64 2.4-1 [57.4 kB]
获取:2 http://ftp.sjtu.edu.cn/ubuntu focal/main amd64 bridge-utils amd64 1.6-2ubuntu1 [30.5 kB]
获取:3 http://ftp.sjtu.edu.cn/ubuntu focal-updates/main amd64 runc amd64 1.1.0-0ubuntu1~20.04.1 [3,892 kB]
获取:4 http://ftp.sjtu.edu.cn/ubuntu focal-updates/main amd64 containerd amd64 1.5.9-0ubuntu1~20.04.4 [33.0 MB]
获取:5 http://ftp.sjtu.edu.cn/ubuntu focal-updates/universe amd64 docker.io amd64 20.10.12-0ubuntu2~20.04.1 [31.8 MB]
获取:6 http://ftp.sjtu.edu.cn/ubuntu focal/main amd64 liberror-perl all 0.17029-1 [26.5 kB]
获取:7 http://ftp.sjtu.edu.cn/ubuntu focal-updates/main amd64 git-man all 1:2.25.1-1ubuntu3.5 [886 kB]
获取:8 http://ftp.sjtu.edu.cn/ubuntu focal-updates/main amd64 git amd64 1:2.25.1-1ubuntu3.5 [4,557 kB]
获取:9 http://ftp.sjtu.edu.cn/ubuntu focal-updates/main amd64 ubuntu-fan all 0.12.13ubuntu0.1 [34.4 kB]
已下载 74.3 MB,耗时 12秒 (6,102 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 pigz。
(正在读取数据库 ... 系统当前共安装有 151688 个文件和目录。)
准备解压 .../0-pigz_2.4-1_amd64.deb ...
正在解压 pigz (2.4-1) ...
正在选中未选择的软件包 bridge-utils。
准备解压 .../1-bridge-utils_1.6-2ubuntu1_amd64.deb ...
正在解压 bridge-utils (1.6-2ubuntu1) ...
正在选中未选择的软件包 runc。
准备解压 .../2-runc_1.1.0-0ubuntu1~20.04.1_amd64.deb ...
正在解压 runc (1.1.0-0ubuntu1~20.04.1) ...
正在选中未选择的软件包 containerd。
准备解压 .../3-containerd_1.5.9-0ubuntu1~20.04.4_amd64.deb ...
正在解压 containerd (1.5.9-0ubuntu1~20.04.4) ...
正在选中未选择的软件包 docker.io。
准备解压 .../4-docker.io_20.10.12-0ubuntu2~20.04.1_amd64.deb ...
正在解压 docker.io (20.10.12-0ubuntu2~20.04.1) ...
正在选中未选择的软件包 liberror-perl。
准备解压 .../5-liberror-perl_0.17029-1_all.deb ...
正在解压 liberror-perl (0.17029-1) ...
正在选中未选择的软件包 git-man。
准备解压 .../6-git-man_1%3a2.25.1-1ubuntu3.5_all.deb ...
正在解压 git-man (1:2.25.1-1ubuntu3.5) ...
正在选中未选择的软件包 git。
准备解压 .../7-git_1%3a2.25.1-1ubuntu3.5_amd64.deb ...
正在解压 git (1:2.25.1-1ubuntu3.5) ...
正在选中未选择的软件包 ubuntu-fan。
准备解压 .../8-ubuntu-fan_0.12.13ubuntu0.1_all.deb ...
正在解压 ubuntu-fan (0.12.13ubuntu0.1) ...
正在设置 runc (1.1.0-0ubuntu1~20.04.1) ...
正在设置 liberror-perl (0.17029-1) ...
正在设置 bridge-utils (1.6-2ubuntu1) ...
正在设置 pigz (2.4-1) ...
正在设置 git-man (1:2.25.1-1ubuntu3.5) ...
正在设置 containerd (1.5.9-0ubuntu1~20.04.4) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
正在设置 ubuntu-fan (0.12.13ubuntu0.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ubuntu-fan.service → /lib/systemd/system/ubuntu-fan.service.
正在设置 docker.io (20.10.12-0ubuntu2~20.04.1) ...
正在添加组"docker" (GID 134)...
完成。
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
正在设置 git (1:2.25.1-1ubuntu3.5) ...
正在处理用于 man-db (2.9.1-1) 的触发器 ...
正在处理用于 systemd (245.4-4ubuntu3.15) 的触发器 ...
zhiyong@zhiyong-docker:~$ ps -ef | grep docker
avahi 808 1 0 23:03 ? 00:00:00 avahi-daemon: running [zhiyong-docker.local]
root 7954 1 0 23:21 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
zhiyong 11004 7409 0 23:22 pts/1 00:00:00 grep --color=auto docker
zhiyong@zhiyong-docker:~$
此时Docker安装成功。接下来就可以准备部署Docker应用。
部署Kylin4.0 On Docker
拉取镜像
官方提供了 Kylin 的 docker 镜像。该镜像中,Kylin 依赖的各个服务均已正确的安装及部署,包括:
- JDK 1.8
- Hadoop 2.8.5
- Hive 1.2.1
- Spark 2.4.7
- Kafka 1.1.1
- MySQL 5.1.73
- Zookeeper 3.4.6
目前最新的也就是4.0.0。所谓的MDX for Kylin也笔者暂时也用不到。
直接执行命令:
zhiyong@zhiyong-docker:~$ sudo docker pull apachekylin/apache-kylin-standalone:4.0.0
Docker就会慢慢拉取镜像。
如果嫌慢,可以配置阿里云加速:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
笔者以七牛云加速为例。实测还是阿里云镜像加速效果更好,能跑满宽带。
配置镜像加速
zhiyong@zhiyong-docker:~$ sudo su root
root@zhiyong-docker:/home/zhiyong# cd /etc/docker/
root@zhiyong-docker:/etc/docker# ll
总用量 20
drwxr-xr-x 2 root root 4096 9月 7 23:21 ./
drwxr-xr-x 132 root root 12288 9月 7 23:21 ../
-rw------- 1 root root 244 9月 7 23:21 key.json
root@zhiyong-docker:/etc/docker# echo '"registry-mirrors":["https://reg-mirror.qiniu.com/"]' > daemon.json
root@zhiyong-docker:/etc/docker# ll
总用量 24
drwxr-xr-x 2 root root 4096 9月 7 23:35 ./
drwxr-xr-x 132 root root 12288 9月 7 23:21 ../
-rw-r--r-- 1 root root 55 9月 7 23:35 daemon.json
-rw------- 1 root root 244 9月 7 23:21 key.json
root@zhiyong-docker:/etc/docker# sudo systemctl daemon-reload
root@zhiyong-docker:/etc/docker# sudo systemctl restart docker
root@zhiyong-docker:/etc/docker# sudo docker info
Client:
Context: default
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version:
runc version:
init version:
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 5.13.0-30-generic
Operating System: Ubuntu 20.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 23.44GiB
Name: zhiyong-docker
ID: BT73:D4XX:EQJN:6ZOB:LMF7:K6YE:U3VN:TME3:HIVO:DDRP:BEKK:Y6E6
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://reg-mirror.qiniu.com/
Live Restore Enabled: false
root@zhiyong-docker:/etc/docker#
可以看到配置七牛云镜像加速成功。速度能比Docker官方镜像仓库稍微快那么一点点。
查看镜像
下载完成后:
zhiyong@zhiyong-docker:~$ sudo docker pull apachekylin/apache-kylin-standalone:4.0.0
4.0.0: Pulling from apachekylin/apache-kylin-standalone
2d473b07cdd5: Pull complete
420a840dbfa1: Pull complete
53f5b18c707b: Pull complete
4e7bcf530536: Pull complete
0b72a391435e: Pull complete
50b0a292a6cc: Pull complete
961f953b1f61: Pull complete
6b76d63844e3: Pull complete
c42f2ce1e3c3: Pull complete
545e34eecbb3: Pull complete
c69e9d45594b: Pull complete
8e79003dcad2: Pull complete
533f278beae5: Pull complete
71b18763d752: Pull complete
8c5468aecb0f: Pull complete
1044ffbcd7bd: Pull complete
0e91243d45af: Pull complete
4a58d841afb3: Pull complete
2594269b8824: Pull complete
32cede976e49: Pull complete
43a83512c2ff: Pull complete
8aacfe026ff7: Pull complete
2ee975072607: Pull complete
902d2c90f166: Pull complete
60419e46d0e0: Pull complete
d0766e3e2d02: Pull complete
bea555677108: Pull complete
f80dcbba5b8e: Pull complete
382d7a63a75e: Pull complete
a650cbb46a0f: Pull complete
Digest: sha256:a52a723eb84981dd5e8082c368965af32a84972df4047643cc063562b314e97a
Status: Downloaded newer image for apachekylin/apache-kylin-standalone:4.0.0
docker.io/apachekylin/apache-kylin-standalone:4.0.0
执行:
zhiyong@zhiyong-docker:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apachekylin/apache-kylin-standalone 4.0.0 a8a5fd0c0497 12 months ago 3.41GB
镜像大概3.4个G的样子,不算小。可以看到Kylin4.0的单节点部署镜像拉取成功。
尝试启动容器
根据官方文档,执行:
docker run -d \\
-m 8G \\
-p 7070:7070 \\
-p 8088:8088 \\
-p 50070:50070 \\
-p 8032:8032 \\
-p 8042:8042 \\
-p 2181:2181 \\
apachekylin/apache-kylin-standalone:4.0.0
在容器启动时,会自动启动以下服务:
- NameNode, DataNode
- ResourceManager, NodeManager
- Kylin
并自动运行 $KYLIN_HOME/bin/sample.sh
.
容器启动后,我们可以通过 “docker exec -it <container_id> bash” 命令进入容器内。当然,由于我们已经将容器内指定端口映射到本机端口,我们可以直接在本机浏览器中打开各个服务的页面,如:
- Kylin 页面:http://127.0.0.1:7070/kylin/login
- HDFS NameNode 页面:http://127.0.0.1:50070
- YARN ResourceManager 页面:http://127.0.0.1:8088
现在就来启动一下试试效果:
zhiyong@zhiyong-docker:~$ sudo docker run -d \\
> -m 8G \\
> -p 7070:7070 \\
> -p 8088:8088 \\
> -p 50070:50070 \\
> -p 8032:8032 \\
> -p 8042:8042 \\
> -p 2181:2181 \\
> apachekylin/apache-kylin-standalone:4.0.0
2c165b6f19ec9cbb2b548c782bdf62acfe48d0e067b1f52573f3099a2a09d960
镜像比较大,启动比较慢:
zhiyong@zhiyong-docker:~$ free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 24007 1453 17289 2 5263 22171
交换: 2047 0 2047
zhiyong@zhiyong-docker:~$ free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 24007 2037 16703 2 5265 21586
交换: 2047 0 2047
zhiyong@zhiyong-docker:~$ free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 24007 2949 15779 2 5278 20675
交换: 2047 0 2047
zhiyong@zhiyong-docker:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c165b6f19ec apachekylin/apache-kylin-standalone:4.0.0 "/home/admin/entrypo…" About a minute ago Up About a minute 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 0.0.0.0:7070->7070/tcp, :::7070->7070/tcp, 0.0.0.0:8032->8032/tcp, :::8032->8032/tcp, 0.0.0.0:8042->8042/tcp, :::8042->8042/tcp, 0.0.0.0:8088->8088/tcp, :::8088->8088/tcp, 0.0.0.0:50070->50070/tcp, :::50070->50070/tcp nice_gould
zhiyong@zhiyong-docker:~$
验证运行情况
验证Kylin
使用Ubuntu自带的火狐进入:127.0.0.1:7070/kylin/login
可以看到已经有登录界面。
由于启动镜像时对外暴露了端口,所以宿主机访问虚拟机的IP,也可以访问到容器:
Kylin默认的用户名和密码:
ADMIN
KYLIN
验证HDFS
使用50070端口可以访问到HDFS的web UI,显然HDFS正常。
验证YARN
可以看到通过8088端口访问到了YARN的WebUI,显然YARN正常。
进入容器
现在可以进入容器看看容器内部状况:
zhiyong@zhiyong-docker:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c165b6f19ec apachekylin/apache-kylin-standalone:4.0.0 "/home/admin/entrypo…" 17 minutes ago Up 17 minutes 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 0.0.0.0:7070->7070/tcp, :::7070->7070/tcp, 0.0.0.0:8032->8032/tcp, :::8032->8032/tcp, 0.0.0.0:8042->8042/tcp, :::8042->8042/tcp, 0.0.0.0:8088->8088/tcp, :::8088->8088/tcp, 0.0.0.0:50070->50070/tcp, :::50070->50070/tcp nice_gould
zhiyong@zhiyong-docker:~$ sudo docker exec -ti 2c165b6f19ec /bin/bash
[root@2c165b6f19ec admin]# jps
480 JobHistoryServer
420 NodeManager
12932 CoarseGrainedExecutorBackend
12405 ExecutorLauncher
9944 Bootstrap
536 QuorumPeerMain
154 NameNode
331 ResourceManager
14044 Jps
253 DataNode
[root@2c165b6f19ec /]# cd /home/admin/
[root@2c165b6f19ec admin]# ll
total 76
drwxr-xr-x 1 root root 4096 Sep 8 2021 apache-hive-1.2.1-bin
drwxr-xr-x 1 root root 4096 Sep 7 15:55 apache-kylin-4.0.0-bin-spark2
drwxr-xr-x 1 root root 4096 Sep 8 2021 apache-maven-3.6.1
-rwxr--r-- 1 root root 3836 Sep 8 2021 entrypoint.sh
-rw-r--r-- 1 root root 0 Sep 7 15:54 first_run
drwxr-xr-x 1 1001 1001 4096 Sep 7 15:51 hadoop-2.8.5
drwxr-xr-x 8 10 143 4096 Jul 12 2017 jdk1.8.0_141
drwxr-xr-x 6 root root 4096 Jul 7 2018 kafka_2.11-1.1.1
-rw-r--r-- 1 root root 26024 Apr 24 2019 mysql80-community-release-el7-3.noarch.rpm
drwxr-xr-x 1 1000 1000 4096 Sep 8 2020 spark-2.4.7-bin-hadoop2.7
drwxr-xr-x 1 1000 1000 4096 Feb 20 2014 zookeeper-3.4.6
-rw-r--r-- 1 root root 5546 Sep 7 15:55 zookeeper.out
[root@2c165b6f19ec admin]# hive
ls: cannot access /home/admin/spark-2.4.7-bin-hadoop2.7/lib/spark-assembly-*.jar: No such file or directory
Logging initialized using configuration in jar:file:/home/admin/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive> show databases;
OK
default
kylin4
Time taken: 1.011 seconds, Fetched: 2 row(s)
hive> use kylin4;
OK
Time taken: 0.041 seconds
hive> show tables;
OK
kylin_account
kylin_cal_dt
kylin_category_groupings
kylin_country
kylin_sales
Time taken: 0.038 seconds, Fetched: 5 row(s)
hive> exit
> ;
[root@2c165b6f19ec bin]# cd /home/admin/apache-hive-1.2.1-bin/bin
[root@2c165b6f19ec bin]# ll
total 32
-rwxr-xr-x 1 root root 1031 Apr 29 2015 beeline
drwxr-xr-x 3 root root 4096 Sep 8 2021 ext
-rwxr-xr-x 1 root root 7844 May 7 2015 hive
-rwxr-xr-x 1 root root 1900 Apr 29 2015 hive-config.sh
-rwxr-xr-x 1 root root 885 Apr 29 2015 hiveserver2
-rwxr-xr-x 1 root root 832 Apr 29 2015 metatool
-rwxr-xr-x 1 root root 884 Apr 29 2015 schematool
可以看到已经安装了jps。并且在家目录下放置了安装包。
执行hive命令也可用,且当前镜像已经有一个kylin的库及5个案例Hive表。
目前并没有启动Hive Server2,笔者感觉有必要启动一下,这样之后拿来用JDBC灌数据就异常方便。
尝试启动Hive
[root@2c165b6f19ec ~]# hive --service metastore
ls: cannot access /home/admin/spark-2.4.7-bin-hadoop2.7/lib/spark-assembly-*.jar: No such file or directory
Starting Hive Metastore Server
^C[root@2c165b6f19ec ~]#
然鹅一切都没有想象中那么美好。居然找不到Jar包。
[root@2c165b6f19ec jars]# pwd
/home/admin/spark-2.4.7-bin-hadoop2.7/jars
[root@2c165b6f19ec jars]# ll | grep spark
-rw-r--r-- 1 1000 1000 138464 Sep 8 2020 hive-beeline-1.2.1.spark2.jar
-rw-r--r-- 1 1000 1000 40817 Sep 8 2020 hive-cli-1.2.1.spark2.jar
-rw-r--r-- 1 1000 1000 11498852 Sep 8 2020 hive-exec-1.2.1.spark2.jar
-rw-r--r-- 1 1000 1000 100680 Sep 8 2020 hive-jdbc-1.2.1.spark2.jar
-rw-r--r-- 1 1000 1000 5505200 Sep 8 2020 hive-metastore-1.2.1.spark2.jar
-rw-r--r-- 1 1000 1000 10287757 Sep 8 2020 spark-catalyst_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 13548861 Sep 8 2020 spark-core_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 708179 Sep 8 2020 spark-graphx_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 1815976 Sep 8 2020 spark-hive-thriftserver_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 1358996 Sep 8 2020 spark-hive_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 537511 Sep 8 2020 spark-kubernetes_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 57068 Sep 8 2020 spark-kvstore_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 75941 Sep 8 2020 spark-launcher_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 687099 Sep 8 2020 spark-mesos_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 184063 Sep 8 2020 spark-mllib-local_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 8031568 Sep 8 2020 spark-mllib_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 2393989 Sep 8 2020 spark-network-common_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 70901 Sep 8 2020 spark-network-shuffle_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 137643 Sep 8 2020 spark-repl_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 30065 Sep 8 2020 spark-sketch_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 9921235 Sep 8 2020 spark-sql_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 2174086 Sep 8 2020 spark-streaming_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 9287 Sep 8 2020 spark-tags_2.11-2.4.7-tests.jar
-rw-r--r-- 1 1000 1000 15461 Sep 8 2020 spark-tags_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 49993 Sep 8 2020 spark-unsafe_2.11-2.4.7.jar
-rw-r--r-- 1 1000 1000 674583 Sep 8 2020 spark-yarn_2.11-2.4.7.jar
[root@2c165b6f19ec jars]#
可以看到还是有不少lib的Jar包可以用。
[root@2c165b6f19ec bin]# pwd
/home/admin/apache-hive-1.2.1-bin/bin
[root@2c165b6f19ec bin]# ll
total 32
-rwxr-xr-x 1 root root 1031 Apr 29 2015 beeline
drwxr-xr-x 3 root root 4096 Sep 8 2021 ext
-rwxr-xr-x 1 root root 7844 May 7 2015 hive
-rwxr-xr-x 1 root root 1900 Apr 29 2015 hive-config.sh
-rwxr-xr-x 1 root root 885 Apr 29 2015 hiveserver2
-rwxr-xr-x 1 root root 832 Apr 29 2015 metatool
-rwxr-xr-x 1 root root 884 Apr 29 2015 schematool
[root@2c165b6f19ec bin]# vi hive
显然这一段配置有问题:
113 # add Spark assembly jar to the classpath
114 if [[ -n "$SPARK_HOME" ]]
115 then
116 sparkAssemblyPath=`ls $SPARK_HOME/lib/spark-assembly-*.jar`
117 CLASSPATH="$CLASSPATH:$sparkAssemblyPath"
将其修改为:
sparkAssemblyPath=`ls $SPARK_HOME/jars/spark-*.jar`
重新尝试:
[root@2c165b6f19ec bin]# hive --service metastore
Starting Hive Metastore Server
^C[root@2c165b6f19ec bin]# hive --service metastore > /dev/null 2>&1 &
[1] 17198
[root@2c165b6f19ec bin]# netstat -atunlp | grep 9083
tcp 0 0 0.0.0.0:9083 0.0.0.0:* LISTEN 17198/java
[root@2c165b6f19ec bin]# jps
480 JobHistoryServer
17281 Jps
420 NodeManager
12932 CoarseGrainedExecutorBackend
12405 ExecutorLauncher
9944 Bootstrap
536 QuorumPeerMain
154 NameNode
331 ResourceManager
253 DataNode
17198 RunJar
[root@2c165b6f19ec bin]# hiveserver2 > /dev/null 2>&1 &
[2] 17375
[root@2c165b6f19ec bin]# jps
480 JobHistoryServer
420 NodeManager
12932 CoarseGrainedExecutorBackend
12405 ExecutorLauncher
9944 Bootstrap
536 QuorumPeerMain
154 NameNode
331 ResourceManager
17435 Jps
253 DataNode
17198 RunJar
17375 RunJar
[root@2c165b6f19ec bin]#
可以看到后台启动了2个Jar包。
使用BeeLine连接:
[root@2c165b6f19ec conf]# beeline -u jdbc:hive2://localhost:10000/ -n root
Connecting to jdbc:hive2://localhost:10000/
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 1.2.1 by Apache Hive
0: jdbc:hive2://localhost:10000/> show databases;
+----------------+--+
| database_name |
+----------------+--+
| default |
| kylin4 |
+----------------+--+
2 rows selected (1.716 seconds)
0: jdbc:hive2://localhost:10000/> exit;
Error: Error while compiling statement: FAILED: ParseException line 1:0 cannot recognize input near 'exit' '<EOF>' '<EOF>' (state=42000,code=40000)
0: jdbc:hive2://localhost:10000/> !quit
Closing: 0: jdbc:hive2://localhost:10000/
[root@2c165b6f19ec conf]#
可以看到此时可以正常使用。
重新启动容器
之前启动时没有暴露3306、9083、10000这3个重要端口,现在需要重新启动镜像,以便对Hive进行一些操作。
停止容器
Closing: 0: jdbc:hive2://localhost:10000/
[root@2c165b6f19ec conf]# exit
exit
zhiyong@zhiyong-docker:~$ sudo docker ps -a
[sudo] zhiyong 的密码:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 以上是关于Ubuntu Kylin 上如何用 bcache 实现 SSD 缓存的主要内容,如果未能解决你的问题,请参考以下文章
mssqlserver 2005 在本机上如何用本机的外网连接数据库引擎 linux下的java程序如何访问mssqlserver数据库