这里记录一下hive安装的步骤,主要参考 https://blog.csdn.net/jssg_tzw/article/details/72354470
hive需要把元数据存储在数据库中,默认的derby不能多进程访问,因此这里使用mysql来存储。centos2.7 默认是没有mysql的,需要手动安装mysql。可以使用wget方式安装:
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y install mysql mysql-server mysql-devel
启用服务并修改密码:
systemctl start mysqld.service
mysql -uroort
mysql>set password for root@localhost = password('123');
下载hive,上传到namenode服务器上,解压,同时创建一个/home/deploy/hive/tmp文件夹用于存放临时文件。在集群上建立如下文件夹:
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive/
hadoop fs -chmod 777 /tmp/hive/
修改/etc/profile,增加两行:
export HIVE_HOME=/home/deploy/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=${HIVE_HOME}/conf
执行source /etc/profile使其生效。
进入conf文件夹,执行:
cp hive-default.xml.template hive-site.xml
将hive-site.xml中的${system:java.io.tmpdir}替换为hive的临时目录,将${system:user.name}都替换为root。
搜索javax.jdo.option.ConnectionURL,将该name对应的value修改为MySQL的地址,例如我修改后是:
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径,例如我的修改后是:
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
搜索hive.metastore.schema.verification,将对应的value修改为false:
<name>hive.metastore.schema.verification</name>
<value>false</value>
下载mysql驱动 https://pan.baidu.com/s/1pLsA48F
上传到hive的lib文件夹下。
开启防火墙,添加3306端口:
systemctl start firewalld
firewall-cmd --permanent --add-port=3306/tcp
这样就能使用hive了。
如果要用spark连接hive,则将hive-site.xml放到spark的conf文件夹下,并添加
<property>
<name>hive.metastore.uris</name>
<value>thrift://IP:9083</value>
</property>
然后hive --service metastore&启用后台服务。
接着将mysql驱动放到spark的jars目录下,在pyspark中输入:
hive = SparkSession.builder.enableHiveSupport().getOrCreate()
即可在pyspark中使用hive。