hive-01-hive集群安装,连接mysql

来源:互联网 发布:php编程 编辑:程序博客网 时间:2024/05/18 07:26

1.linux安装mysql,并且生成hive用户,密码为Abc!123D,权限为所有权限,请看(这点很重要)http://blog.csdn.net/qq_21383435/article/details/76573955

2。我的hadoop是2。7,hive下载的是2.2,下载解压hive到/opt/moudles/apache-hive-2.2.0-bin这个目录
3。配置hive环境变量

export HIVE_HOME=/opt/moudles/apache-hive-2.2.0-binexport PATH=$PATH:$HIVE_HOME/bin"/etc/profile" 109L, 2732C                              

4。配置hive的环境

vim hive-env.shHADOOP_HOME=/opt/moudles/hadoop-2.7.3export HIVE_CONF_DIR=/opt/moudles/apache-hive-2.2.0-bin/conf

5.配置vim conf/hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->  <!-- Hive Execution Parameters -->    <property>        <name>hive.metastore.local</name>        <value>false</value>    </property>    <!-- 配置元数据不在本地  -->    <property>         <name>hive.metastore.warehouse.dir</name>         <value>hdfs://mycluster/hive/warehouse</value>     </property>    <!-- 配置元数据不在本地 在hdfs://mycluster/hive/warehouse这个目录里,因为我是配置的HA,所以这里用的是mycluster,不是的话,需要配置hadoop的NameNode节点所在的主机名 -->        <property>      <name>javax.jdo.option.ConnectionURL</name>      <value>jdbc:mysql://biluos.com:3306/hive_db?createDatabaseIfNotExist=true</value>      <description>JDBC connect string for a JDBC metastore</description>    </property>    <!-- 配置hive要连接的数据库 这里有时候需要useSSL=true -->    <property>      <name>javax.jdo.option.ConnectionDriverName</name>      <value>com.mysql.jdbc.Driver</value>      <description>Driver class name for a JDBC metastore</description>    </property>    <!-- 配置驱动  -->    <property>      <name>javax.jdo.option.ConnectionUserName</name>      <value>hive</value>      <description>username to use against metastore database</description>    </property>    <!-- 配置访问MySQL的用户名  -->    <property>      <name>javax.jdo.option.ConnectionPassword</name>      <value>Abc!123D</value>      <description>password to use against metastore database</description>    </property>    <!-- 配置访问MySQL的密码  -->    <property>      <name>hive.metastore.uris</name>      <value>thrift://biluos.com:9083</value>      <description>Thrift URI for the remote metastore. ...</description>    </property>    <!-- 配置不知道啥玩意  -->    <property>      <name>hive.metastore.schema.verification</name>      <value>false</value>    </property>    <!-- 配置不知道啥玩意,貌似hive格式化的时候有的出错和这个有关  -->    <property>      <name>hive.cli.print.current.db</name>      <value>true</value>    </property>    <!-- 配置使用hive命令行的时候显示当前数据库  -->    <property>      <name>hive.cli.print.header</name>      <value>true</value>    </property>    <!-- 配置不知道  --></configuration>

6。把MySql驱动放到Hive的lib目录下
这里写图片描述
上面这个带bin的不知道是不是windows使用的,反正没测试,因为报错太多,用空测试吧
7。初始化hive

[root@biluos apache-hive-2.2.0-bin]# schematool -initSchema -dbType mysql --verbose

–verbose可要可不要,要的话会显示详细信息,我在这里卡了很久。但是不知怎么就解决了。主要是出问题
这里写图片描述
这里重点检查配置文件和hive用户的权限,主要是连接的URL配置。
成功后mysql中可以看到
这里写图片描述
8。启动Hive
实际使用时,一般通过后台启动metastore和hiveserver实现服务,命令如下:
hive –service metastore &
hive –service hiveserver &
我现在是测试
这里写图片描述
然后启动hive命令行
这里写图片描述
这一点如果先执行这个命令会报错如下,需要先执行hive –service metastore

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientCaused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientCaused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientCaused by: java.lang.reflect.InvocationTargetExceptionCaused by: MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused)Caused by: java.net.ConnectException: Connection refused (Connection refused)

9。hive中建立一个数据库,然后建立一个表create table test(id int,name string); 可以看到网页上可以看到
这里写图片描述
10。好了,安装完成


11,下面是集群的另外一种配置,其他不变只需要修改hive-site.xml就好了

<!-- hive表的默认存储路径 -->        <property>         <name>hive.metastore.warehouse.dir</name>         <value>hdfs://mycluster/hive/warehouse</value>        </property>        <!-- 指定mysql的连接 -->        <property>          <name>javax.jdo.option.ConnectionURL</name>          <value>jdbc:mysql://biluos.com:3306/hive_db?createDatabaseIfNotExist=true</value>          <description>JDBC connect string for a JDBC metastore</description>        </property>        <!-- 指定驱动类 -->        <property>          <name>javax.jdo.option.ConnectionDriverName</name>          <value>com.mysql.jdbc.Driver</value>          <description>Driver class name for a JDBC metastore</description>        </property>        <!-- 指定用户名 -->        <property>          <name>javax.jdo.option.ConnectionUserName</name>          <value>hive</value>          <description>username to use against metastore database</description>        </property>        <!-- 指定密码 -->        <property>                                                                                                                                                                   <name>javax.jdo.option.ConnectionPassword</name>                                                                                                                           <value>Abc!123D</value>                                                                                                                                                    <description>password to use against metastore database</description>                                                                                                    </property>                                                                                                                                                                <!-- thrift://<host_name>:<port> 默认端口是9083 -->                                                                                                                        <property>                                                                                                                                                                   <name>hive.metastore.uris</name>                                                                                                                                           <value>thrift://biluos.com:9083</value>                                                                                                                                    <description>Thrift URI for the remote metastore. ...</description>                                                                                                      </property>          <!--指定zookeeper-->                                                                                                                                                       <property>                                                                                                                                                                         <name>hbase.zookeeper.quorum</name>                                                                                                                                        <value>biluos.com,biluos1.com,biluos2.com</value>                                                                                                                  </property>