Apache Hive 安装详解及相关问题解决方案

摘 要

本文介绍hive工具的安装及整合mysql

下载Hive

点击hive官方下载

hive目前两个运行版本分为两个分支:1.x 、2.x

1.x主要是运行在MapReduce上面。

2.x主要运行在Spark上面。

Apache Hive 安装详解及相关问题解决方案

安装及配置

  1. 上传并解压Hive

将Hive上传到hadoop集群服务器/itunic/目录下,并解压到当前目录。

  1. tar -zxvf apache-hive-1.2.1-bin.tar.gz

2.将hive配置到环境变量

  1. vi /etc/profile
  2. #set hive env
  3. export HIVE_HOME=/itunic/hive
  4. export PATH=${HIVE_HOME}/bin:$PATH
  5. #让环境变量生效
  6. source /etc/profile

3.修改Hive配置文件

  • 修改hive-env.sh文件

进入${HIVE_HOME}/conf/目录下,执行:

  1. #将hive-env 模板文件复制一份
  2. cp hive-env.sh.template hive-env.sh
  3. #复制完成后进入该文件的编辑模式
  4. vi hive-env.sh
  5. #将以下内容写入到hive-env.sh文件中
  6. #jdk的安装目录
  7. export JAVA_HOME=/itunic/jdk
  8. #hadoop的安装目录
  9. export HADOOP_HOME=/itunic/hadoop
  10. #hive的安装目录
  11. export HIVE_HOME=/itunic/hive
  • 修改log4j文件

进入${HIVE_HOME}/conf/目录下,执行:

  1. #copy hive-log4j模板文件
  2. cp hive-log4j.properties.template hive-log4j.properties
  3. #编辑该文件
  4. vi hive-log4j.properties
  5. #将EventCounter修改成org.apache.hadoop.log.metrics.EventCounter
  6. #log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter
  7. log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
  • 整合Mysql

由于hive自身的derby模式,只运行有一个Session连接。在多人使用hive的时候,会造成线程不安全问题。这里我们采取将于mysql整合,把hive的元数据保存进mysql。因为mysql本身支持多session,这样就可以避免多人使用hive时,造成的线程不安全问题。

进入${HIVE_HOME}/conf/目录下,执行:

  1. vi hive-site.xml

将以下信息写入到hive-site.xml文件中

Because they lower blood pressure, a variety of safe, buy Vardenafil online is the best way for you and now let us explain why. And even less than this for most persons, Lovegra can also be used by women though some doctors do not prescribe it to women. There is always an instruction in every Brand Viagra package which must be read and followed carefully, but due to some safety factors you should consult your family doctor before taking it.

  1. <configuration>
  2.         <property>
  3.                 <name>javax.jdo.option.ConnectionURL</name>
  4.                 <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
  5.         </property>
  6.         <property>
  7.                 <name>javax.jdo.option.ConnectionDriverName</name>
  8.                 <value>com.mysql.jdbc.Driver</value>
  9.         </property>
  10.         <property>
  11.                 <name>javax.jdo.option.ConnectionUserName</name>
  12.                 <value>root</value>
  13.         </property>
  14.         <property>
  15.                 <name>javax.jdo.option.ConnectionPassword</name>
  16.                 <value>root</value>
  17.         </property>
  18. </configuration>

6.copy Mysql 驱动

安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

7.启动hive

bin/hive

附录

1.如果报错Terminal initialization failed; falling back to unsupported

将${HIVE_HOME}/lib 里面的jline2.12替换了hadoop 中${HADOOP_HOME}/share/hadoop/yarn/lib/jline-0.09*.jar

2.如果启动hive报mysql没有权限,在mysql授权(在安装mysql的机器上执行)

  1. mysql -uroot -p
  2. #(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
  3. GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;
  4. FLUSH PRIVILEGES;

3.如果抛出异常

  1. Logging initialized using configuration in jar:file:/itunic/apache-hive-2.0.0-bin/lib/hive-common-2.0.0.jar!/hive-log4j2.properties
  2. Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

则需要执行以下命令即可解决

  1. schematool -dbType mysql -initSchema

 

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: