hive-2.3.3安装总结

本文详细记录了在Linux CentOS 6.8上安装Hive 2.3.3的过程,包括安装SSH、Hadoop 2.7.7、升级MySQL至8.0.12以及配置Hive使用MySQL存储元数据的步骤,并解决了安装过程中遇到的各种问题,如SSH配置、密钥对生成、数据库连接等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive安装总结:
安装的系统是linux centos6.8
1,下载软件,解压
openssh-7.5p1.tar.gz
首先安装ssh,卸载旧的版本
解压后make & make install
安装后设置,/etc/ssh/ssh_config文件设置ForwardAgent yes, 这个设置是为使用ssh-agent(专用密钥高速缓存)和keychain(单点登录)

ssh-keygen -t rsa -P 'hadoop' -f ~/.ssh/id_rsa
ssh-keygen -t dsa -P 'hadoop' -f ~/.ssh/id_dsa
cp ~/.ssh/id_rsa.pub  ~/.ssh/authorized_keys
cp ~/.ssh/id_dsa.pub  ~/.ssh/authorized_keys2
(cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys2)

chmod 0600 ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys2
scp ~/.ssh/authorized_keys userb@slave2:~/.ssh
scp ~/.ssh/authorized_keys2 userb@slave2:~/.ssh

ssh-add   ~/.ssh/id_rsa //添加到ssh-agent高速缓存中
ssh-add   ~/.ssh/id_dsa //添加到ssh-agent高速缓存中

下面这步hadoop中是需要的,尤其是datanode,否则会抛出错误:master1: ssh: connect to host master1 port 22: No route to host
ssh localhost //Permanently added 'localhost' (ECDSA) to the list of known hosts.

启动:sudo service sshd restart

安装hadoop,用的版本是2.7.7,安装过程不叙述了,网上很多
hadoop-2.7.7.tar.gz

升级mysql, 先卸载旧的版本:
下载软件:
mysql-community-client-8.0.12-1.el6.x86_64.rpm
mysql-community-common-8.0.12-1.el6.x86_64.rpm
mysql-community-libs-8.0.12-1.el6.x86_64.rpm
mysql-community-server-8.0.12-1.el6.x86_64.rpm

查看已安装包:
rpm -qa | grep -i mysql
卸载:
rpm -ev --nodeps mysql-libs-5.1.73-7.el6.x86_64
rpm -ev --nodeps perl-DBD-MySQL-4.013-3.el6.x86_64
rpm -ev --nodeps qt-mysql-4.6.2-28.el6_5.x86_64
rpm -ev --nodeps mysql-server-5.1.73-7.el6.x86_64
rpm -ev --nodeps mysql-5.1.73-7.el6.x86_64

安装顺序:
rpm -ivh mysql-community-common-8.0.12-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.12-1.el6.x86_64.rpm  
rpm -ivh mysql-community-client-8.0.12-1.el6.x86_64.rpm  
rpm -ivh mysql-community-server-8.0.12-1.el6.x86_64.rpm 

安装后设置:
创建data目录,作为数据库存储位置:
  mkdir /usr/local/mysql/data
配置my.cnf文件(/etc/my.cnf):
datadir=/usr/local/mysql/data
修改权限 (linux):
  cd /usr/local/mysql
  chown –R mysql .  //把当前目录下的文件及目录的属性改为mysql用户
  chgrp –R mysql .  //把当前目录下的文件所属的组件改为mysql组
初始化:
mysqld --initialize --console
Mysql 安装之后默认的数据文件存储目录为/var/lib/mysql, 日志文件存储目录/var/log/mysqld.log
修改文件夹属性
chmod g+w -R mysql
chmod g+w -R mysql-files
chmod g+w -R mysql-keyring
chown mysql:mysql -R mysql
chown mysql:mysql -R mysql-files
chown mysql:mysql -R mysql-keyring

启动服务:
net start mysql(windows)
sudo service mysqld start(linux)

登录:
mysql -u root -p //这里要输入密码, 系统初始化密码界面有提示,或查看日志
修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'westking';

如果用客户端登录报错(SQL Manager for MYSQL):
Authentication plugin 'caching_sha2_password' cannot be loaded
解决:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'westking';

连接字符串:
mysql-connector-java-8.0.12.jar, 这是一个平台无关包,连接字符串中必须包含时区信息
第一种方式,参数比较全:
String url = "jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
Class.forName("com.mysql.cj.jdbc.Driver");//com.mysql.cj.jdbc.Driver 取代com.mysql.jdbc.Driver

mysql-connector-java-8.0.12.tar.gz
安装hive:
下载软件
apache-hive-2.3.3-bin.tar.gz
解压后配置:
$ tar -xzvf hive-x.y.z.tar.gz
设置环境变量 HIVE_HOME 指向安装目录
  $ cd hive-x.y.z
  $ export HIVE_HOME={{pwd}}
设置PATH环境变量:
  $ export PATH=$HIVE_HOME/bin:$PATH
  
首先hadoop配置,修改core-site.xml
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.userb.hosts</name>//这里的userb代理root,userb是hadoop系统运行登录名(我的系统是这样,其他含义待考证),用于hive的beeline登录
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.userb.groups</name>
        <value>*</value>
    </property>
    
    
在hadoop中创建目录,设置权限:
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse
    
其次设置mysql,hive使用的是mysql数据库存储元数据,而不是内置的derby,所以要设置一下,如果使用内置的derby数据库,无需设置:
进入所安装的Hive的conf目录,找到hive-site.xml,(若没修改,则是hive-default.xml.template)。
在hive-site.xml中:  
  <configuration>
  <!--默认情况下,Hive会将这些表的数据存储在属性hive.metastore.warehouse.dir所定义目录的子目录下。当我们删除一个管理表时,Hive也会删除这个表中的数据。-->
<property>
  <name>hive.metastore.warehouse.dir</name> 
  <value>/user/hive/warehouse</value>    建立该目录/user/hive/warehouse 并设置写权限
  <description>hive表的默认存储路径,为HDFS的路径location of default database for the warehouse</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
   <!--如果useSSL=true,&符号要转义为&amp; 数据库要配置支持, 有性能损失-->
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    <!-- <value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
  <!--注意下面的驱动程序名com.mysql.cj.jdbc.Driver代替com.mysql.jdbc.Driver, 是针对mysql-connector-java-8.0.12.jar版本的设置,否则有警告:
  Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.-->
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>    驱动程序名
  <value>com.mysql.cj.jdbc.Driver</value>    
  <!--<value>com.mysql.jdbc.Driver</value>-->
  <description>Driver class name for a JDBC metastore</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>    mysql登录名
  <value>XXXXX</value>
  <description>username to use against metastore database</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>    mysql密码
  <value>XXXXX</value>
  <description>password to use against metastore database</description>
</property>
<property>
  <name>hive.exec.local.scratchdir</name>
  <value>file:/usr/local/hadoop/hive/iotmp</value>  将${system:java.io.tmpdir}全部替换为file:/usr/local/hadoop/hive
  <description>Local scratch space for Hive jobs</description>
</property>
<property>
  <name>hive.downloaded.resources.dir</name>
  <value>file:/usr/local/hadoop/hive/${hive.session.id}_resources</value>
  <description>Temporary local directory for added resources in the remote file system.</description>
</property>
</configuration>

下载mysql-connector-java-8.0.12.jar,并添加到hive目录下的lib中.
cp mysql-connector-java-8.0.12.jar /home/install/apache-hive-2.3.3-bin/lib/    注意替换/home/install为具体安装目录

设置:
初始化schematool -initSchema -dbType mysql, mysql数据库中会创建一个hive数据库,如果该数据库存在,初始化前手工先删除  

启动测试:
  $ $HIVE_HOME/bin/hiveserver2

  $ $HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000
  
  或者beeline
  !connect jdbc:hive2://localhost:10000
  输入用户名:userb  (hadoop配置--core-site.xml中设置的用户名hadoop.proxyuser.userb.hosts)
  输入密码:xxxxx
  
  输入命令:
  show databases;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值