Hadoop学习(三)Hive安装

下载hive包上传到linux主机上并解压 这里使用 apache-hive-2.1.1-bin.tar.gz

安装配置 MySQL

CentOS7安装mysql提示 :No package mysql-server available.

输入下面两部

第一步下载mysql源安装包: wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

第二步安装mysql源: rpm -ivh mysql-community-release-el7-5.noarch.rpm

经过以上两个步骤后再次执行:

yum install mysql-server
yum install mysql
yum install mysql-devel

命令就可以成功安装了。

启动mysql

systemctl start mysqld

查看mysql 的状态

systemctl status mysqld

配置 Hive
进入 hive 安装目录下的配置目录,然后修改配置文件

cd /home/chs/apache-hive-2.1.1-bin/conf

然后再该目录下创建一个新文件 hive-site.xml
将下面的内容添加到 hive-site.xml 文件中.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
#IP 地址是指安装 MySQL 的节点的 IP
<value>jdbc:mysql://192.168.190.147:3306/hive?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>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
</configuration>

将 mysql 的 java connector 复制到依赖库中 jdbc的连接器
下载地址 https://dev.mysql.com/downloads/connector/j/ 下载后传到linux中解压后把jar包移到hive中

mv mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar
~/apache-hive-2.1.1-bin/lib/

配置环境变量
vim /etc/profile

export HIVE_HOME=/home/chs/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin

配置完之后使配置文件生效 source /etc/profile

修改hive-env.sh

cp hive-env.sh.template  hive-env.sh
HADOOP_HOME=/home/chs/hadoop-2.7.3

然后就可以启动hive了

启动错误:org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因:hive 2.0以上版本,安装配置完成之后需要先初始化元数据库
解决方法:
执行 schematool -dbType mysql -initSchema
之后就可以正常启动hive


上面使用的是本地的mysql,生产环境中一般使用远端的mysql存储,配置如下

    <configuration>
<property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master/metastore?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>hadoop</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/warehouse</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>true</value>
    </property>
    <property>
        <name>datanucleus.autoStartMechanism</name> 
        <value>SchemaTable</value>
    </property>
    <property>
        <name>datanucleus.schema.autoCreateTables</name>
        <value>true</value>
    </property>

    <property>
        <name>beeline.hs2.connection.user</name>
        <value>hadoop</value>
        </property>
     <property>
        <name>beeline.hs2.connection.password</name>
        <value>hadoop</value>
     </property>
</configuration>
  • hive.metastore.uris中的“master“含义为metastore server所在的机器
  • javax.jdo.option.ConnectionURL中的“master”为mysql安装机器的hostname
  • javax.jdo.option.ConnectionUserName和javax.jdo.option.ConnectionPassword分别为mysql的访问用户和密码
  • fs.defaultFS为HDFS的namenode启动的机器地址
  • beeline.hs2.connection.user和beeline.hs2.connection.password是beeline方式访问的用户名和密码,可任意指定,但在beeline访问时要写入你指定的这个

启动metastore

nohup hive --service metastore >> /home/chs/apache-hive-2.1.1-bin/metastore.log 2>&1  &

启动hive server

nohup hive --service hiveserver2 >> /home/chs/apache-hive-2.1.1-bin/hiveserver.log 2>&1 &

查看是否启动成功

ps aux | grep hive

可以看到查看到下面结果,有两个进程HiveMetaStore和HiveServer2

 [chs@master ~]$ ps aux | grep hive
chs        2479 99.7 18.0 2327632 367752 pts/0  Sl   16:15   0:19 /home/chs/java/jdk1.8.0_172/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/home/chs/hadoop-2.7.3/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/chs/hadoop-2.7.3 -Dhadoop.id.str=chs -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/chs/hadoop-2.7.3/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/home/chs/apache-hive-2.1.1-bin/conf/parquet-logging.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /home/chs/apache-hive-2.1.1-bin/lib/hive-metastore-2.1.1.jar org.apache.hadoop.hive.metastore.HiveMetaStore
chs        2662  136 14.5 2302352 295540 pts/0  Sl   16:15   0:10 /home/chs/java/jdk1.8.0_172/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/home/chs/hadoop-2.7.3/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/chs/hadoop-2.7.3 -Dhadoop.id.str=chs -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/chs/hadoop-2.7.3/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/home/chs/apache-hive-2.1.1-bin/conf/parquet-logging.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /home/chs/apache-hive-2.1.1-bin/lib/hive-service-2.1.1.jar org.apache.hive.service.server.HiveServer2
chs        2854  0.0  0.0 112660   972 pts/0    S+   16:15   0:00 grep --color=auto hive

启动客户端可以使用hive命令也可以使用beeline命令。推荐使用beeline
OK 使用beeline启动客户端,之后输入下面的命令发起一个连接

!connect jdbc:hive2://master:10000/default  hadoop hadoop

其中hadoop和hadoop分别是在hive-site.xml配置文件中由beeline.hs2.connection.user和beeline.hs2.connection.password设置的。
如果出现下面的错误

Could not open connection to the HS2 server. Please check the server URI and if the URI is correct, then ask the administrator to check the server status.
Error: Could not open client transport with JDBC Uri: jdbc:hive2://master:10000/default: java.net.ConnectException: Connection refused (Connection refused) (state=08S01,code=0)

需在hadoop的配置文件core-site.xml中加入以下配置并重启hiveserver2, hive metastore,HDFS和YARN:

<property>
 <name>hadoop.proxyuser.chs.groups</name>
 <value>*</value>
</property>

<property>
 <name>hadoop.proxyuser.chs.hosts</name>
 <value>*</value>
</property>

其中的chs是你登陆linux虚拟机的用户名
在连接就成功了显示如下

beeline> !connect jdbc:hive2://master:10000/default  hadoop hadoop
Connecting to jdbc:hive2://master:10000/default
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
18/07/02 16:37:03 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://master:10000/default> 

OK远端连接成功

猜你喜欢

转载自blog.csdn.net/mingyunxiaohai/article/details/80368336