【Hive总结】3.Hive安装

1. apache官网下载Hive的安装包 (hive2.0.0)

2. tar -zxvf hive安装包

3. 修改conf目录下的配置文件名字: mv hive-default.xml.template hive-site.xml

4. 安装mysql数据库。

CentOS6:
            yum install mysqld
            yum install mysql-server
            service mysqld start
            netstat -nplt | grep 3306 查看3306端口启动情况
            
        CentOS7:
            rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
            yum install mysql-server
            service mysqld start
            netstat -nap |grep 3306
            
        【注意】
            1. grep 'temporary password' /var/log/mysqld.log 查看MySQL5.7的root用户的初始密码,登陆进去之后必须先修改密码,否则不能进行任何操作!
            2.MySQL5.7是有安全认证机制的,若要使用简单密码做下面的操作:
                
                修改mysql配置参数
                
                set global validate_password_policy=0;
                set global validate_password_mixed_case_count=0;
                set global validate_password_number_count=3; 
                set global validate_password_special_char_count=0;
                set global validate_password_length=3;
                
                SET PASSWORD = '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
                
                SHOW VARIABLES LIKE 'validate_password%';
                 
                修改简单密码
                use mysql
                SET  PASSWORD = PASSWORD('123456');
                flush privileges;
                设置完后重启mysql服务器就可以了

5. 把mysql的驱动包放入hive的lib目录下

6. 授权远程访问

grant all on *.* to root@'%' identified by '123456';

所有的机器都可以通过以用户名是root密码是123456的身份登陆MySQL数据库

7. 修改hive-site.xml文件

 <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://Master:3306/hive</value>
    <description>JDBC connect string for a JDBC metastore</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>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
    <description>password to use against metastore database</description>
  </property>

【注意】 MySQL中的数据库需要提前创建

扩展:安装中出现的问题

(1)

Caused by: MetaException(message: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))
 

很显然这是因为作为metastore的数据库没有初始化,错误中已经告诉我们怎么解决,只要一条命令:

./schematool -initSchema -dbType mysql

(这里按照你自己用的数据库来初始化,可以是derby,我用的mysql)

(2)

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
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:472)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
    at org.apache.hadoop.fs.Path.initialize(Path.java:205)
    at org.apache.hadoop.fs.Path.<init>(Path.java:171)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:515)
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:458)
    ... 8 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
    at java.net.URI.checkPath(URI.java:1804)
    at java.net.URI.<init>(URI.java:752)
    at org.apache.hadoop.fs.Path.initialize(Path.java:202)
    ... 11 more
 

解决办法

<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive/local</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
--------------------- 
作者:fhg12225 
来源:CSDN 
原文:https://blog.csdn.net/fhg12225/article/details/45817477 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/FullStackDeveloper0/article/details/89438481