本帖详细介绍搭建步骤,仅仅记录自己搭建过程以及采坑经历。
前提环境:
Hadoop集群 版本2.7.2
Spark集群 版本2.1.0
Linux版本 Centos7
准备搭建 MySql版本5.5.61 ,Hive-2.1.0
去官网下载MySQl的tar包。我下的是mysql-5.5.61-linux-glibc2.12-x86_64.tar.gz
解压tar包
tar -zxvf mysql-5.5.61-linux-glibc2.12-x86_64.tar.gz
添加系统mysql组和mysql用户:
执行命令:groupadd mysql和useradd -r -g mysql mysql
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
有一篇贴给出了比较全的出现场景在此贴出
--------------------------------------------------------------------------------------------------------------------------------
问题可能的原因有多种,具体什么原因最好的办法是先查看下错误日志:
1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
2、可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !
4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
5、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
7、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了