Hive 分布式搭建,Spark集成Hive记录

本帖详细介绍搭建步骤,仅仅记录本身搭建过程以及采坑经历。mysql

前提环境:linux

Hadoop集群 版本2.7.2sql

Spark集群 版本2.1.0shell

Linux版本 Centos7数据库

准备搭建 MySql版本5.5.61 ,Hive-2.1.0centos

去官网下载MySQl的tar包。我下的是mysql-5.5.61-linux-glibc2.12-x86_64.tar.gzoop

解压tar包   ui

tar -zxvf mysql-5.5.61-linux-glibc2.12-x86_64.tar.gz

添加系统mysql组和mysql用户:spa

执行命令:groupadd mysql和useradd -r -g mysql mysql.net

groupadd mysql

useradd -r -g mysql mysql

修改当前目录拥有者为mysql用户:执行命令

chown -R mysql:mysql ./

安装数据库:执行命令

./scripts/mysql_install_db --user=mysql

修改当前目录拥有者为root用户:执行命令

chown -R root:root ./

修改当前data目录拥有者为mysql用户:执行命令

chown -R mysql:mysql data

到此数据库安装完毕

---------------------

启动mysql服务和添加开机启动mysql服务:

添加开机启动:执行命令

cp support-files/mysql.server /etc/init.d/mysql

把启动脚本放到开机初始化目录

启动mysql服务:执行命令

service mysql start

这里咱们遇到个异常:

咱们这样解决,执行下面三条命令

mkdir /var/log/mariadb

touch /var/log/mariadb/mariadb.log

chown -R mysql:mysql /var/log/mariadb/

再次启动成功!

执行命令:

ps -ef|grep mysql

看到mysql服务说明启动成功

修改mysql的root用户密码,root初始密码为空的:

执行命令:

./bin/mysqladmin -u root password '密码'

这里咱们又遇到了一个错误

执行

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 

 以后解决

把mysql客户端放到默认路径:

ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

注意:建议使用软链过去,不要直接包文件复制,便于系统安装多个版本的mysql

mysql已经安装完毕而且启动,此时又出现问题,没法远程链接

解决方法:

执行use mysql;
执行select 'host' from user where user='root';
执行update user set host = '%' where user = 'root';这一句执行完可能会报错,不用管它。
执行FLUSH PRIVILEGES;

以后便可远程访问。

中间有一个服务在安装mysql的时候出现了问题The server quit without updating PID file

有一篇贴给出了比较全的出现场景在此贴出

--------------------------------------------------------------------------------------------------------------------------------

问题可能的缘由有多种,具体什么缘由最好的办法是先查看下错误日志:

一、多是/usr/local/mysql/data/mysql.pid文件没有写的权限

解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  而后从新启动mysqld!

二、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,若是有使用“kill -9  进程号”杀死,而后从新启动mysqld!

三、多是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的数据目录/data看看,若是存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !

四、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

五、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,若是有就当即注释掉吧。

六、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql全部者及权限

七、selinux惹的祸,若是是centos系统,默认会开启selinux

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled后存盘退出重启机器试试。

---------------------------------------------------------------------------------------------------------------------------------

Hive集群的配置我参考了这边帖子

https://blog.csdn.net/envinfo2012/article/details/75669559

启动方式参考了这篇帖子,由于上面的启动在我这里很差使

https://blog.csdn.net/lblblblblzdx/article/details/79760959

 

按照上面的帖子配置而后启动hive集群,最后将hive metastore的配置hive-site.xml放在spark的conf目录。启动spark-shell时报错。

比较简单的解决方案是修改hive-site.xml里的配置去掉验证。

<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
</property>

再次启动spark-shell不在报此错误,可是又多了另外一个错误:

缘由是个人Spark主节点上有一个hive的主节点,hive的主节点上的hive-site.xml并无配置相似连接主节点的配置,Spark中的hive-site.xml添加上以下配置就行了

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://192.168.194.131:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

再次启动,再也不报错

终于能够成功的使用Spark操纵hive了

相关文章
相关标签/搜索