首先安装mysql
用mysql:5.7举例
1可以先在docker hub上查找mysql的镜像
docker search mysql
2,我这次安装的mysql:5.7
所以直接从docker hub上拉取mysql:5.7
docker pull mysql:5.7
3,运行mysql
运行容器,需要做数据挂载! #安装启动MySQL,需要配置密码,这是要注意点!
官方测试:docker run —name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
启动:
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
—name 容器名字docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql0 mysql:5.74,查看容器是否创建成功
# docker ps 命令 #列出当前正在运行的容器 -a #列出当前正在运行的容器+带出历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 docker ps![]()
有个命令,可以进入容器内部,ctrl+p+q可以以后台运行的方式退出这个软件
docker exec -it 容器的id /bin/bash
5,使用navicat连接服务器或虚拟机上的mysql
开始安装hive
前提条件:
在虚拟机或是服务器上安装好hadoop 2.7.3的环境
安装好mysql5:7
在mysql中创建一个名为hive的数据库
安装步骤:
1,去官网下载hive安装文件,下载地址 :hive 下载地址apache-hive-2.3.9-bin.tar.gz
2,将hive安装文件上传到虚拟机或是服务器的~/soft目录下,解压:
$ cd ~/soft
$ tar -zxvf apache-hive-2.3.9-bin.tar.gz3,创建软连接:
ln -s apache-hive-2.3.9-bin hive4,配置环境变量
vim ~/.bashrc文件添加以下内容
#注意:一定不要打错! 可以在操作之前拍个快照。
export HIVE_HOME=~/soft/hive
export PATH=$HIVE_HOME/bin:$PATH使配置文件生效
source ~/.bashrc5,配置hive-site.xml(没有这个文件直接vim就可以创建)
cd hive/conf
vim hive-site.xml将以下内容添加到xml文件中
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!--数据库驱动 如果你使用的是8.x 驱动是:com.mysql.cj.jdbc.Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--数据库的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--数据库的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>6,将mysql的驱动文件拷贝到hive/lib目录下
cp mysql-connection-java-5.1.46.jar ~/soft/hive/lib7,初始化Mysql
find / -name schematool
/root/soft/apache-hive-2.3.9-bin/bin/schematool -dbType mysql -initSchema
可以看到已经正确完成初始化了。
如果初始化不成功,可能是hadoop的版本问题。hadoop3. 和hive 3 .会出现
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:536)
at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:554)
at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:448)
at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)
at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5099)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:97)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:81)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
错误原因:系统找不到这个类所在的jar包或者jar包的版本不一样系统不知道使用哪个。hive启动报错的原因是后者
解决办法:
1、com.google.common.base.Preconditions.checkArgument这个类所在的jar包为:guava.jar
2、hadoop-3.2.1(路径:hadoop\share\hadoop\common\lib)中该jar包为 guava-27.0-jre.jar;而hive-3.1.2(路径:hive/lib)中该jar包为guava-19.0.1.jar
3、将jar包变成一致的版本:删除hive中低版本jar包,将hadoop中高版本的复制到hive的lib中。
再次启动问题得到解决!
可以测试hive是否安装成功,开启hive之前要先开启hadoop
可以测试hive是否安装成功,开启hive之前要先开启hadoop
start-all.sh
hive
可以看到安装成功了。