CentOS6.5上hive安装过程与常见错误调试

本文提供了一步一步的指南,用于在CentOS6.5系统上安装和配置Hive,并且详细说明了如何安装配置MySQL作为Hive的元数据库,以及Hive的安装步骤和环境变量配置。
CentOS6.5上hive安装过程                    

准备:已安装hadoop,这里我使用hadoop-2.6.0单进伪分布式,将hive安装在hadoop用户下

第一部分:安装配置mysql

1.确保系统中已安装了MySQL,可以先尝试启动MySQL服务,一般在root权限下启动
  service mysqld start
  若显示:mysqld: unrecognized service则是mysql没有安装,在这里我选择用yum命令安装mysql
  yum -y install mysql-server mysql mysql-devel 
  命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。
详细过程:http://jingyan.baidu.com/article/c74d600079be530f6a595dc3.html

2.进入MySQL,一定先启动mysql,否则会报错:

  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


  mysql -uroot -p   密码默认为空

3.配置HIVE元数据库,以及创建用户名,分配网络访问权限。
  insert into mysql.user(Host,User,Password) values("hadoop","hive",password("hive"));
  create database hive;
  grant all on hive.* to hive@'%'  identified by 'hive';
  grant all on hive.* to hive@'localhost'  identified by 'hive';
  grant all on hive.* to hive@'hadoop'  identified by 'hive';
  flush privileges;


4.mysql -uhive -p
  show databases;
  use hive;
  create table test (name int);
  show tables;
  drop table test;


第二部分:安装配置hive
1.导入hive安装包,在/home/hadoop目录下,解压缩
  tar -zxvf apache-hive-1.2.1-bin.tar.gz 
  mv apache-hive-1.2.1-bin hive

2.配置环境变量,在hadoop用户下,配置.bash_profile
  CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:/home/hadoop/hive/lib
  HIVE_HOME=/home/hadoop/hive
  PATH=$PATH:$HIVE_HOME/bin

  配置好后source .bash_profile,用echo $HIVE_HOME命令,若显示/home/hadoop/hive,则配置正确。

3.配置hive-site.xml和hive-env.sh.template两个文件,hive-site.xml文件没有,需要自己复制出来
  cd /home/hadoop/hive/conf
  cp hive-default.xml.template hive-site.xml


  vim hive-site.xml,可以输入:/javax/来快速定位
   
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
   
   <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string 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.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

  vim hive-env.sh.template

  # Set HADOOP_HOME to point to a specific hadoop install directory
  HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.6.0
  
  # Hive Configuration Directory can be controlled by:
  export HIVE_CONF_DIR=/home/hadoop/hive/conf


4.将mysql-connector-java-5.1.22-bin.jar导入/hive/lib中,不导入会报错


5.故障处理1:报错Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: 

             java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D


  解决办法:
  在hive下创建临时IO的tmp文件夹。然后将路径配置到hive-site.xml的下列参数中
  <property>
    <name>hive.querylog.location</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Location of Hive run time structured log file</description>
  </property>
  
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>



故障处理2:报错[ERROR] Terminal initialization failed; falling back to unsupported

   java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected


   解决办法:
   将hive下的新版本jline的JAR包拷贝到hadoop下:
   cp /hive/apache-hive-1.1.0-bin/lib/jline-2.12.jar /home/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib
    -rw-r--r-- 1 root root   87325 Mar 10 18:10 jline-0.9.94.jar.bak
    -rw-r--r-- 1 root root  213854 Mar 11 22:22 jline-2.12.jar


6.启动hadoop,此处我是使用伪分布式,所以要先进入hadoop-2.6.0目录下
  sbin/start-all.sh
  
  之后,可以启动hive
  hive 
 或 hive -hiveconf hive.root.logger=DEBUG,console 输出bug,显示在控制台 
 或 hive --hiveconf  hive.cli.print.current.db=true 同时启动数据库












































### 安装 Hive 的前提条件 为了成功安装 Hive,在 CentOS 6.5 上需先完成一些必要的准备工作。确保 Java 已经被正确安装并配置好环境变量[^3]。 ### 下载解压 Hive 下载适合版本的 Apache Hive 并将其放置到合适的位置: ```bash wget http://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz tar zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/ ln -s /usr/local/apache-hive-1.2.1-bin/ /usr/local/hive ``` 设置环境变量以便于全局访问 Hive 命令: 编辑 `~/.bashrc` 文件,添加如下内容: ```bash export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin source ~/.bashrc ``` 验证是否可以正常调用 hive 命令: ```bash hive --version ``` ### 配置 MySQL 作为 Metastore 数据库 由于默认情况下 Hive 使用 Derby 数据库存储元数据,这不适合生产环境下的多用户操作。因此推荐使用外部数据库如 MySQL 来替代它。按照以下步骤来准备 MySQL 和相应的 JDBC 连接器: #### 安装 MySQL Server 通过 YUM 包管理工具快速部署 MySQL 社区版服务端软件包[^1]: ```bash yum install mysql-community-server ``` 启动 MySQL 服务器并设置开机自启: ```bash service mysqld start chkconfig mysqld on ``` 创建用于存储 Hive 元数据信息的新数据库以及相应权限账户: ```sql CREATE DATABASE metastore; GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` #### 添加 MySQL Connector/J 到 Hive 库路径 获取官方发布的最新稳定版 MySQL JDBC Driver (Connector/J),并将 JAR 文件复制至 Hive 的 lib 目录内以供加载驱动程序之用[^4]: ```bash cd $HIVE_HOME/lib wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar ``` 更新 `$HIVE_HOME/conf/hive-site.xml` 中关于连接参数的具体设定项,使之指向之前建立好的 MySQL 实例地址、用户名密码等细节属性值。 ### 初始化 Schema 结构 对于基于关系型数据库管理系统(RDBMS)构建起来的数据仓库而言,首次运行前必须初始化内部表结构定义语句集;针对本案例中的 MySQL 后端,则可通过内置脚本来实现自动化建模过程: ```bash schematool -dbType mysql -initSchema ``` ### 测试 HiveServer2 功能性 最后一步就是检验整个集群能否顺利运作了——开启后台进程监听来自客户端提交过来的任务请求,并保持长时间在线状态直到手动终止为止[^2]: ```bash nohup hive --service hiveserver2 & ``` 此时应该能够利用 Beeline 或其他兼容 Thrift 协议的应用程序远程接入此节点上的 HiveServer2 组件来进行 SQL 查询分析工作流啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值