server1上安装mariadb

安装mariadb

#执行安装

yum install mariadb-embedded mariadb-libs mariadb-bench mariadb mariadb-server

#启动mariadb

systemctl start mariadb

#查看mariadb状态

systemctl status mariadb.service

#开机自启动

systemctl enable mariadb

#查看是否开启开机自启动

systemctl list-unit-files | grep mariadb

生成设置权限

#登录mariadb

mysql -uroot

#设置权限

#本机

set password for root@localhost=password('root');

grant all on *.* to root@'server1' identified by 'root';

#其他任意ip

set password for root@'%'=password('root');

grant all on *.* to root@'%' identified by 'root';

#刷新授权表

flush privileges;

mariadb的驱动下载地址,可能用不上,这里是一个补充

https://downloads.mariadb.com/Connectors/java/

问题

问题:mysql -uroot -p登录遇到如下问题

分析:

1.查看maraidb服务是否开启

systemctl status mariadb.service

发现已经开启了mariaidb服务

2.通过开启的日志和配置文件(/etc/my.cnf)发现--socket=/var/lib/mysql/mysql.sock

解决:

建立软链接: ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

在server1上安装hive

上传安装包,解压,软链

解压到/usr/local目录下:

建立软链接

cd /usr/local

ln -s apache-hive-3.1.2-bin hive

解决Hive与Hadoop之间guava版本差异

cd /usr/local/hive

#删除hive原来的guava

rm -rf lib/guava-19.0.jar

#将hadoop的guava拷贝到hive/lib下

cp /usr/local/hadoop /share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

修改配置文件

hive-env.sh

cd /usr/local/hive/conf

mv hive-env.sh.template hive-env.sh

vim hive-env.sh

#末尾增加

export HADOOP_HOME=/usr/local/hadoop

export HIVE_CONF_DIR=/usr/local/hive/conf

export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

hive-site.xml(新建)

vim hive-site.xml

<configuration>

<!-- 存储元数据mysql相关配置 -->

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://server1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false</value>

</property>

<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>root</value>

</property>

<!-- H2S运行绑定host -->

<property>

<name>hive.server2.thrift.bind.host</name>

<value>server1</value>

</property>

<!-- 远程模式部署metastore metastore地址 -->

<property>

<name>hive.metastore.uris</name>

<value>thrift://server1:9083</value>

</property>

<!-- 关闭元数据存储授权 -->

<property>

<name>hive.metastore.event.db.notification.api.auth</name>

<value>false</value>

</property>

</configuration>

上传mysql jdbc驱动到hive/lib下

mysql-connector-java-5.1.32.jar

初始化元数据

cd /usr/local/hive

bin/schematool -initSchema -dbType mysql -verbose

#初始化成功会在mysql中创建74张表

在hdfs创建hive存储目录

先启动 hadoop

hdfs dfs -mkdir /tmp

hdfs dfs -mkdir -p /user/hive/warehouse

hdfs dfs -chmod g+w /tmp

hdfs dfs -chmod g+w /user/hive/warehouse

启动hive

启动metastore服务

#前台启动 关闭ctrl+c

/usr/local/hive/bin/hive --service metastore

#前台启动开启debug日志

/usr/local/hive/bin/hive –service metastore –hiveconf hive.root.logger=DEBUG,console

#后台启动 进程挂起 关闭使用jps+ kill -9

nohup /usr/local/hive/bin/hive --service metastore &

启动hiveserver2服务

nohup /usr/local/hive/bin/hive --service hiveserver2 &

#注意 启动hiveserver2需要一定的时间 不要启动之后立即beeline连接 可能连接不上

检测

jps

26645 Jps

25981 RunJar

24553 RunJar

20086 NameNode

20311 DataNode

20849 ResourceManager

21498 JobHistoryServer

beeline客户端连接

连接访问

[root@server1 ~]# /usr/local/hive/bin/beeline

beeline> !connect jdbc:hive2://server1:10000

beeline> root

beeline> 直接回车

0: jdbc:hive2://server1:10000> show databases;

+----------------+

| database_name |

+----------------+

| default |

+----------------+

1 row selected (1.242 seconds)

拷贝server1安装包到beeline客户端机器上(agent3)

scp -r /usr/local/hive agent3:/usr/local

在agent3上重复2.7.4. beeline客户端连接操作

常见问题

问题1

  • 现象

Error: Could not open client transport with JDBC Uri: jdbc:hive2://server1:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=08S01,code=0)

  • 修改

在hadoop的配置文件core-site.xml中添加如下属性:

<property>

<name>hadoop.proxyuser.root.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.root.groups</name>

<value>*</value>

</property>

  • 连接访问

问题2

错误解决:==Hive3执行insert插入操作 statstask异常

现象

在执行insert + values操作的时候 虽然最终执行成功,结果正确。但是在执行日志中会出现如下的错误信息。

开启hiveserver2执行日志。查看详细信息

2020-11-09 00:37:48,963 WARN [5ce14c58-6b36-476a-bab8-89cba7dd1706 main] metastore.RetryingMetaStoreClient: MetaStoreClient lost connection. Attempting to reconnect (1 of 1) after 1s. setPartitionColumnStatistics

ERROR [5ce14c58-6b36-476a-bab8-89cba7dd1706 main] exec.StatsTask: Failed to run stats task

但是 ==此错误并不影响最终的插入语句执行成功==。

分析原因和解决

- statstask是一个hive中用于统计插入等操作的状态任务 其返回结果如下

- 此信息类似于计数器 用于告知用户插入数据的相关信息 但是不影响程序的正常执行。

- Hive新版本中 这是一个issues 临时解决方式如下

https://community.cloudera.com/t5/Support-Questions/Hive-Metastore-Connection-Failure-then-Retry/td-p/151661

解决在mysql metastore中删除 PART_COL_STATS这张表即可。