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
上传安装包,解压,软链
建立软链接 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&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 临时解决方式如下
解决在mysql metastore中删除 PART_COL_STATS这张表即可。