搭建hive环境(一)

一、与 Hadoop 类似,Hive 也有 3 种运行模式:

  1. 内嵌模式:

将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。 2. 本地模式

这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。

  1. 远程模式

此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。

一、下载安装 Hive

http://hive.apache.org/downloads.html

二、配置系统环境变量:

修改 /etc/profile或者~/.bashrc 文件,使用 vim /etc/profile 或者vim ~/.bashrc来修改:
# Hive environment
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

二、内嵌模式

(1)修改 Hive 配置文件:hive-env.sh和hive-site.xml

hive-env.sh

export HADOOP_HEAPSIZE=1024

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/hadoop

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib

hive-site.xml

hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。

hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。

(2)创建必要目录

前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:

$ hadoop dfs -ls /
没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。
$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive

(3)修改 io.tmpdir 路径

同时,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径,你可以自己新建一个目录来替换它,例如 /home/hive/iotmp .

mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  
chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  

最后再将

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

中的${system:user.name}修改如下:

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

(4) 初始化

./schematool -initSchema -dbType derby
 nohup ./hive --service metastore &
 nohup ./hive --service hiveserver2 &

运行 Hive

./hive

前面我们已经提到过,内嵌模式使用默认配置和 Derby 数据库,所以无需其它特别修改,先 ./start-all.sh 启动 Hadoop, 然后直接运行 hive:

四、Thrift 服务

通过hiveServer/hiveServer2启动Thrift服务,客户端连接Thrift服务访问Hive数据库(JDBC,JAVA等连接Thrift服务访问Hive)。

<property>
    <name>hive.server2.thrift.port</name>
    <value></value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
  </property>

  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>127.0.0.1</value>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
  </property>

  <property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
    <description>
      Setting this property to true will have HiveServer2 execute
      Hive operations as the user making the calls to it.
    如果为True:Hive Server会以提交用户的身份去执行语句
    如果为False:会以hive server daemon的admin user来执行语句

    </description>
  </property>

启动Thrift服务:hive --service hiveserver2

测试Thrift服务:

   新开一个命令行窗口,执行beeline命令:   

./beeline
1 若是内嵌模式则:
    If hive.server2.authentication is "NONE" in HIVE_HOME/conf/hive-site.xml then connect beeline with below url
    Connection URL:
               !connect jdbc:hive2://
2  Remote Mode: 
    i.)SASL Authentication:

        If value of "hive.server2.authentication"      property in HIVE_HOME/conf/hive-site.xml to be      set as "SASL" then connect hive beeline with    below url
        
        Beeline URL:
                  !connect      jdbc:hive2://<host>:<port>/<db>
        
    ii.)NOSASL Authentication:
        If "hive.server2.authentication" is nosasl      then connect the beeline like below.
        Beeline URL:
        
                  !connect      jdbc:hive2://<host>:<port>/<db>;auth     =noSasl

三、本地模式 (选用mySql作为元数据库,将mySql和Hive安装在master服务器上)

  • 首先用root用户安装mysql:
yum install mysql-server 

安装完成后:

service mysqld start 
mysql
若不报错则执行下命令:
use mysql; 
update user set password=PASSWORD(“hadoop”)where user=”root”; 
flush privileges; 
quit 
service mysqld restart 
mysql -u root -p 
password:hadoop

到此测表示mysql已经安装成功。 接下来创建用户:

创建Hive元数据库: 
mysql>create database hive;
alter database hive character set latin1;

mysql>grant all privileges on hive.* to 'hive'@'%' identified by 'hive';

<!--mysql>CREATE USER ‘connect’ IDENTIFIED BY ‘connect’; -->
<!--mysql>GRANT ALL PRIVILEGES ON connect.* TO ‘connect’@’ip’ WITH GRANT OPTION; -->
<!--mysql> GRANT ALL PRIVILEGES ON connect.* TO ‘connect’@’ip’ IDENTIFIED BY ‘connect’; -->

mysql>flush privileges; 

二、安装hive

hive安装的前提是hadoop已经安装完毕。且需要在hdfs上新建/user/hive/metahouse/和/tmp/hive文件夹,并赋予777权限:

hdfs dfs -mkdir /user/hive/metahouse(只能一级一级的建)
hdfs dfs -mkdir /tmp/hive
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive  
hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。

hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
tar -zxvf apache-hive-2.2.0-bin.tar.gz -C /home/connect/software
ln -s apache-hive-2.2.0-bin hive

然后设置环境变量:

vim ~/.bashrc
export HIVE_HOME=/home/connect/software/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
source ~/.bashrc
  • 修改配置文件:
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh

a.修改hive-site.xml

<property>
  <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://10.37.167.203:3306/hive_metastore?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>

  • 修改 io.tmpdir 路径 要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径,可以自己新建一个目录来替换它,例如:
/home/connect/hive/bin/iotmp
chmod 777 /home/connect/hive/bin/iotmp
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
  • 拷贝JDBC驱动包

将mySql的JDBC驱动包复制到Hive的lib目录下

cp mysql-connector-java.bin.jar /home/connect/hive/lib

6、分发Hive分别到slave1,slave2,slave3上

scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave1:/usr/local/hadoop/ 
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave2:/usr/local/hadoop/ 
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave3:/usr/local/hadoop/ 

环境变量等如同master

7、测试Hive 进入到Hive的安装目录,命令行: cd /usr/local/hadoop/apache-hive-1.2.1-bin/bin hive hive>show tables; 正常显示,即是安装配置成功。

初始化

schematool -dbType mysql -initSchema

参考及后续有用博文

https://www.cnblogs.com/tq03/p/5107949.html

https://www.cnblogs.com/netuml/p/7841387.html

http://www.cnblogs.com/zlslch/p/6025410.html

https://www.cnblogs.com/yaohaitao/p/6588922.html

转载于:https://my.oschina.net/112612/blog/1634884

<think>好的,我现在需要帮助用户了解如何搭建Hive环境。用户提供了几个引用资料,我需要整合这些信息,确保步骤正确且符合最佳实践。首先,我应该回忆Hive安装的基本流程,然后结合引用内容逐核对步骤。 首先,引用中提到Hive需要MySQL的支持,所以安装前必须确保MySQL已经安装好。引用[2]和引用[4]都提到了这点,特别是引用[4]提到需要将MySQL的JDBC驱动复制到Hive的lib目录。这很重要,因为Hive需要连接MySQL作为元数据存储。 接下来,安装Hive的步骤。根据引用[2],需要下载并解压Hive,设置环境变量,然后进行配置管理。引用[3]详细说明了配置文件的修改,比如hive-env.sh和hive-site.xml。用户需要修改这些配置文件,正确指定JDK、Hadoop的路径,以及MySQL的连接信息。 另外,引用[2]提到在配置管理时,需要将带template后缀的文件重命名,例如hive-default.xml.template改为hive-site.xml。这点容易出错,需要特别注意。 然后,环境变量的设置也是关键步骤。引用[2]和引用[3]都提到了在/etc/profile中添加HIVE_HOME和PATH变量,这确保Hive命令可以在终端中全局访问。 可能遇到的问题包括:MySQL未正确安装导致元数据存储失败,JDBC驱动未正确放置导致连接问题,或者配置文件中的路径错误。需要提醒用户检查这些步骤,并验证MySQL服务是否运行。 最后,测试Hive安装是否成功,可以通过命令行执行hive命令,查看是否能进入交互界面,并创建表测试功能是否正常。如果出现错误,需要检查日志文件,通常是hive.log,以排查问题。 总结步骤应该是:安装前提条件(JDK、Hadoop、MySQL),下载解压Hive配置环境变量,修改配置文件,添加JDBC驱动,初始化元数据库,最后测试。需要确保每个步骤都清晰,并引用正确的参考资料。</think>### Hive环境搭建教程(安装配置步骤) #### 安装前提条件 1. **安装JDK 8** Hive依赖Java环境,需先配置$JAVA_HOME$[^3]。 2. **安装Hadoop集群** Hive运行在Hadoop之上,需安装Hadoop(如Hadoop-2.7.x)并确保服务正常启动[^2]。 3. **安装MySQL 5.6.x** Hive使用MySQL存储元数据,需提前安装并启动MySQL服务[^1][^4]。 --- #### 二、Hive安装步骤 1. **下载并解压Hive** 从官网下载Hive安装包(如`apache-hive-2.3.6-bin.tar.gz`),解压到目标目录: ```bash tar -xzvf apache-hive-2.3.6-bin.tar.gz -C /usr/local/ mv /usr/local/apache-hive-2.3.6-bin /usr/local/hive ``` 2. **配置环境变量** 编辑`/etc/profile`文件,添加以下内容: ```bash export HIVE_HOME=/usr/local/hive export PATH=$HIVE_HOME/bin:$PATH ``` 执行`source /etc/profile`使配置生效[^3]。 3. **配置Hive配置文件** - **复制模板文件** 进入`$HIVE_HOME/conf`目录,重命名模板文件: ```bash cp hive-env.sh.template hive-env.sh cp hive-default.xml.template hive-site.xml ``` - **修改`hive-env.sh`** 添加以下内容: ```bash export JAVA_HOME=/export/server/jdk1.8 # 替换为实际JDK路径 export HADOOP_HOME=/export/server/hadoop-2.7.2 # 替换为实际Hadoop路径 export HIVE_HOME=/usr/local/hive ``` - **修改`hive-site.xml`** 配置MySQL连接信息(示例): ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://chun1: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>your_mysql_password</value> </property> ``` > 注:需根据实际MySQL地址、用户名和密码修改[^3]。 4. **添加MySQL JDBC驱动** 将MySQL的JDBC驱动(如`mysql-connector-java-5.1.47.jar`)复制到`$HIVE_HOME/lib`目录: ```bash cp mysql-connector-java-5.1.47.jar /usr/local/hive/lib/ ``` 5. **初始化元数据库** 执行以下命令初始化Hive元数据: ```bash schematool -dbType mysql -initSchema ``` --- #### 三、验证安装 1. **启动Hive CLI** 执行`hive`命令进入交互界面: ```bash hive ``` 2. **测试功能** 创建测试表并查询: ```sql CREATE TABLE test(id INT); SHOW TABLES; ``` --- #### 四、常见问题解决 - **MySQL连接失败** 检查MySQL服务是否启动,用户权限和密码是否正确[^1]。 - **Hadoop未启动** 确保HDFS和YARN服务已启动,否则Hive无法操作数据。 - **权限问题** 若Hive无法写入HDFS,需检查Hadoop目录权限设置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值