美文网首页
hive搭建

hive搭建

作者: 后知不觉1 | 来源:发表于2022-03-24 13:32 被阅读0次
    安装组件
    • mysql
    • metastore
    • hiveserver2
      这里搭建是使用的metastore的远程模式

    1、mysql安装

    参照mysql安装

    2、安装

    2.1、下载安装包

      wget   http://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
      tar -xvf apache-hive-3.1.2-bin.tar.gz
    

    2.2、配置

    2.2.1、进入hive下的conf目录,复制一份hive-env.sh
      cp hive-env.sh.template hive-env.sh
    
    2.2.2、 hive-env.sh
    HADOOP_HOME=/usr/local/src/hadoop
    export HIVE_CONF_DIR=/usr/local/src/apache-hive-3.1.2-bin/conf  
    
    2.2.3、hive-site.xml

    默认配置在hive-default.xml.template 有说明
    vim $HIVE_CONF_DIR/conf/hive-site.xml

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://bigdata3:3306/hive?createDatabaseIfNotExist=true</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>123456</value>
    </property>
    <property>
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>bigdata3</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://bigdata3:9083</value>
    </property>
    
    2.2.4、分开配置目录
      cp  apache-hive-3.1.2-bin hiveserver2   #用来启动hiveserver2
      cp  apache-hive-3.1.2-bin hive-metastore     #用来启动metastore
    

    区分配置的原因:
    在搭建hive metastore代理(拆分hive集群自己开发的服务)时,无法共用配置。共用配置也可以的

    3、mysql库

    3.1、上传connect jar

    wget http://r98hqakjo.hn-bkt.clouddn.com/mysql-connector-java-5.1.39.jar?e=1648103087&token=266QXNOMpolsjVaAbedGSo5SlBF_aI6oqrUPonGU:3xcxXgOt0RsV3TZz9HZs02O3umw=  -P  $path
     mv mysql-connector-java-5.1.39.jar?e=1648103087  mysql-connector-java-5.1.39.jar
    

    3.1、创建元数据库

        mysql -uroot -proot 
        create  database hive;  #可以叫其他名字,配置修改好即可
    

    3.2、初始化元数据库

    cd apache-hive-3.1.2-bin/
    bin/schematool -dbType mysql -initSchema
    

    4、hadoop配置代理用户

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <!-- root是指hive的启动用户,注意替换,不然会报hadoop不响应 -->
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <!-- root是指hive的启动用户,注意替换,不然会报hadoop不响应 -->
        <value>*</value>
    </property>
    

    4、启动

    后台启动metastore
    nohup bin/hive --service metastore 2>&1 >> /var/metastore.log &

    首先需要启动hiveserver2前台启动:bin/hive --service hiveserver2
    后台启动:nohup bin/hive --service hiveserver2 2>&1 >> /var/hive2.log &

    bin/beeline 连接hiveserver2 (如果beeline报错参考下面这个博客即可)

    troubleshooting

    1、日志调试

    前台启动

    bin/hive --service hiveserver2  --hiveconf hive.root.logger=DEBUG,console  #如果不生效可以直接修复$HIVE_HOME/conf/hive-log4j.properties文件
    

    2、元数据初始化问题

    问题背景:mysql 库用存储过程将大小表名改为小写表名后,在insert into语句报错

    ERROR [pool-6-thread-132] DataNucleus.Datastore: Error thrown executing CREATE TABLE `SEQUENCE_TABLE`
    (
    `SEQUENCE_NAME` VARCHAR(255) BINARY NOT NULL,
    `NEXT_VAL` BIGINT NOT NULL,
    CONSTRAINT `SEQUENCE_TABLE_PK` PRIMARY KEY (`SEQUENCE_NAME`)
    ) ENGINE=INNODB : Table 'sequence_table' already exists
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'sequence_table' already exists
    

    解决:怀疑是初始化元数据有问题库,备份元数据信息,重新执行元数据初始化脚本解决

        bin/schematool -dbType mysql -initSchema
    

    附: 解决字段描述中文乱码问题

       ALTER TABLE `COLUMNS_V2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

    3、select count(*) 卡在 Killcommand xxx job

    问题背景 select count(*) 卡在 Killcommand xxx job ,手动执行mapreduce能够间隙性成功

    Application application_1649846876537_0002 failed 2 times due to Error launching appattempt_1649846876537_0002_000002. Got exception: org.apache.hadoop.net.ConnectTimeoutException 链接不上
    

    解决: 根据报错发现label下面绑定了两台机器,一台调整了安全组,一台未调整导致。重新调整安全组后成功

    另外再资源不够情况下也会出现这种情况,需要调整队列资源

    4、hiveserver启动卡住

    修改日志等级,排查发现卡在链接hdfs阶段。重启hdfs解决

    5、hive client修改参数失败报错

    报错
    It is not in list of params that are allowed to be modified at runtime
    
    原因

    hive开启鉴权后,不允许设置在session

    6、hive索引参数导致的问题

    hive.optimize.index.filter设置为true时,hive会开启自动创建索引模式,内部修改hive代码没有兼容这一逻辑,记录下

    7、hive分割符问题

    7.1、背景:

    正常建表,采用默认的分隔符:hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by '\001',如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。导致无法导入textfile文件

    7.2、解决

    指定特定的特殊符号作为分隔符:

     #指定字段使用空格分割,行有换行符分割
     CREATE TABLE test(id int, name string ,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\ ' LINES TERMINATED BY '\n'  STORED AS TEXTFILE;
    

    8、强制删除hive库

     drop database $dbname cascade;

    相关文章

      网友评论

          本文标题:hive搭建

          本文链接:https://www.haomeiwen.com/subject/pffsdrtx.html