如何配置远程模式hive

配置远程模式hive的前提需要安装mysql,这里一般不会出问题

第一:安装mysql,这里是黑马的安装方法。

#-------------Mysql安装----------------------

#卸载Centos7自带mariadb
rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps

#创建mysql安装包存放点
mkdir /export/software/mysql
#上传mysql-5.7.29安装包到上述文件夹下、解压
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

#执行安装
yum -y install libaio
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm

#初始化mysql
mysqld --initialize
#更改所属组
chown mysql:mysql /var/lib/mysql -R

#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat  /var/log/mysqld.log
#这行日志的最后就是随机生成的临时密码
[Note] A temporary password is generated for root@localhost: o+TU+KDOm004

#修改mysql root密码、授权远程访问
mysql -u root -p
Enter password:     #这里输入在日志中生成的临时密码

#更新root密码  设置为hadoop
mysql> alter user user() identified by "hadoop";
Query OK, 0 rows affected (0.00 sec)
#授权
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

#mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld

#建议设置为开机自启动服务
systemctl enable  mysqld

#查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld

第二:安装hive

#--------------------Hive安装配置----------------------
# 上传解压安装包
cd /export/server/
tar zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive

#解决hadoop、hive之间guava版本差异
cd /export/server/hive
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

#添加mysql jdbc驱动到hive安装包lib/文件下
mysql-connector-java-5.1.32.jar

#修改hive环境变量文件 添加Hadoop_HOME
cd /export/server/hive/conf/
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.1.4
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib

#新增hive-site.xml 配置mysql等相关信息
vim hive-site.xml


#初始化metadata
cd /export/server/hive
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表


#-----------------hive-site.xml--------------
<configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value> jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>hadoop</value>
    </property>

    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node1</value>
    </property>

    <!-- 远程模式部署metastore 服务地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083</value>
    </property>

    <!-- 关闭元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- 关闭元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>

这个配置也是黑马的,其中许多内容都是用黑马自己的文件路径,所以你需要改一下,问题一般都处在hive-site.xml文件的配置上,自己配置的时候一定要仔细一点

第三:初始化元数据

由于上面有mysql的开机后台自启动配置,所以在启动hive之前,你唯一要做的就是初始化元数据

#-----------------Metastore Hiveserver2启动----
#前台启动  关闭ctrl+c
/export/server/hive/bin/hive --service metastore

#后台启动 进程挂起  关闭使用jps + kill
#输入命令回车执行 再次回车 进程将挂起后台
nohup /export/server/hive/bin/hive --service metastore &

#前台启动开启debug日志
/export/server/hive/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console

这里注意/export/server/需要改为你自己的hive路径,另外这里我一般都地方都是使用export/server/hive/bin/hive --service metastore &在后台初始化元素据,不知道为啥,加上nohup会被自动忽略。

第四:启动hiveserver2

所谓远程模式,就是你开启一个服务端,任何客户端只要知道你的服务端地址,都可以操作你的数据库。

倘若你在你的集群的另一台机器上操作的话,你不需要安装mysql,也不需要提供驱动,你只要配置号远程链接所需要的hive端口就行,所以你首先需要在该客户端安装hive,详细步骤参考第二步,下面是该客户端hive-site.xml文件的配置:

<configuration>    
    <!-- 远程模式部署metastore 服务地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083</value>
    </property>
</configuration>

这里的node1改成你的地址。

配置完成后,你需要在你的服务端先启动metastore,在启动hiveserver2,这里需要注意的是,启动hiveserver2启动后,你需要稍等一会,具体等多久你可以看出现的ID数量,我的电脑四个ID就行了,不过这个一般不靠谱,你可以使用"netstat -tlp|grep 10000"查看10000端口是否被占用,如果被占用就说明启动成功了。

//初始化元数据
bin/hive --service metastore
//启动hiveserver2
bin/hive --service hiveserver2

最后就是在你的客户端用bin/beeline命令启动

//启动beeline
bin/beeline
//链接客户端
! connect jdbc:hive2//hadoop102:10000

这里的hadoop102是我的服务端地址,你改成你的就行。后面需要你输入客户端用户名就可以连接上了!

 ok,搞定。

最后,谈谈我的感受。

为了完成这些配置,我花了大概7、8个小时,其中也发生了多次错误,都是一些自己的失误,还是别走捷径,认真做好每一步,感谢csdn,感谢不放弃的自己。

如果您想在Spark应用程序中使用远程Hive,需要进行以下步骤: 1. 在Spark应用程序中添加Hive支持,可以通过以下方式实现: ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("Spark with Hive") .config("hive.metastore.uris", "thrift://<remote-hive-metastore-host>:9083") .enableHiveSupport() .getOrCreate() ``` 在这个例子中,我们通过设置“hive.metastore.uris”参数来指定远程Hive元存储的主机和端口号,这个参数应该是一个以逗号分隔的主机列表。请注意,您需要将<remote-hive-metastore-host>替换为实际的远程Hive元存储主机名或IP地址。 2. 然后,您可以使用Hive表,可以通过以下步骤实现: ```scala spark.sql("CREATE TABLE IF NOT EXISTS myTable (key INT, value STRING)") spark.sql("INSERT INTO myTable VALUES (1, 'value1'), (2, 'value2')") val df = spark.sql("SELECT * FROM myTable") df.show() ``` 在这个例子中,我们创建了一个名为“myTable”的Hive表,并向其中插入了两个行。然后我们执行了一个查询,并将结果作为DataFrame显示出来。 需要注意的是,您需要在Spark的classpath中包含Hive的相关库,并且确保您的Spark应用程序可以访问远程Hive服务。如果您使用的是Spark Standalone或YARN模式,可以通过将hive-site.xml文件放置在Spark配置目录中来配置Hive。如果您使用的是其他集群管理工具(如Apache Mesos或Amazon EMR),则需要参考相关文档进行配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值