• Hadoop之Hive 安装_(hadoop 集群)


    Hive mysql的metastore安装准备(***掌握***)

    在nameNode1机子上实践:

    把hive-0.12.0.tar.gz解压到/itcast/

    # tar -zxvf hive-0.12.0.tar.gz -C /itcast

    修改/etc/profile文件,将hive加入环境变量

    # vim /etc/profile

    export JAVA_HOME=/usr/java/jdk1.7.0_79

    export HADOOP_HOME=/itcast/hadoop-2.4.1

    export HIVE_HOME=/itcast/hive-0.12.0

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

    Source 一下,让配置生效

    # source /etc/profile

    安装完毕!

    提示:metastore是hive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎。Derby引擎的缺点:一次只能打开一个会话,使用Mysql作为外置存储引擎,多用户同时访问。

    Ø 安装mysql数据库(***掌握****)

    (注意:没网络,可以配置好本地yum源)

    # yum -y install mysql-server

    启动mysql数据库

    # service mysqld start

    初始化mysql数据库(默认root的密码为空,按提示一步步完成)

    # /usr/bin/mysql_secure_installation

    将mysql加入开机启动

    # chkconfig mysqld on

    允许远程登录mysql

    首先登录mysql数据,然后执行下面两行语句:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'itcast' WITH GRANT OPTION;

      (

      grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
      给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123

      )

    flush privileges;

    修改$HIVE_HOME/bin的hive-config.sh,增加以下三行

    export JAVA_HOME=/usr/java/jdk1.7.0_79

    export HIVE_HOME=/itcast/hive-0.12.0

    export HADOOP_HOME=/itcast/hadoop-2.4.1

    Ø 配置MySQL的metastore(***掌握***)

    上传数据库驱动mysql-connector-java-5.1.28.jar到/itcast/hive-0.12.0/lib

    cp hive-default.xml.template hive-site.xml 

    修改$HIVE_HOME/conf/hive-site.xml

    # vim /itcast/hive-0.12.0/conf/hive-site.xml

    <configuration>

    <property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://localhost: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>itcast</value>

    </property>

    </configuration>

    配置完毕!

    Ø 测试配置是否正确(***掌握***)

    启动hive

    # hive

    创建数据库

    hive> create database test_db;

    显示所有数据库

    show databases;

    使用数据库test_db

    hive> use test_db;

    创建学生表

    hive> create table student(id int,name string);

    查看是否在HDFS中存有下面文件夹

    http://namenode1:50070/explorer.html#/user/hive/warehouse/test_db.db/student

     

     

     

    -------------bug--------------------------------------

    1.

    Logging initialized using configuration in file:/usr/local/apache-hive-1.1.0-bin/conf/hive-log4j.properties
    [ERROR] Terminal initialization failed; falling back to unsupported
    java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
        at jline.TerminalFactory.create(TerminalFactory.java:101)
        at jline.TerminalFactory.get(TerminalFactory.java:158)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
        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)
    
    Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
        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)

     

    错误原因

    Hive has upgraded to Jline2 but jline 0.94 exists in the Hadoop lib.
    • 1

    解决方案(Hive on Spark Getting Started):

    1.Delete jline from the Hadoop lib directory (it's only pulled in transitively from ZooKeeper).
    2.export HADOOP_USER_CLASSPATH_FIRST=true
  • 相关阅读:
    c/c++ linux 进程间通信系列7,使用pthread mutex
    c/c++ linux 进程间通信系列6,使用消息队列(message queue)
    c/c++ linux 进程间通信系列5,使用信号量
    eos 创建两对的公钥和私钥, 钱包,交易所转账到主网,主网到交易所
    c/c++ linux 进程间通信系列4,使用共享内存
    python基础-网络编程part02
    idea新建项目相关名词意义
    idea中当前模块资源目录上显示属于其他模块
    centos下安装rabbitmq
    JAVA中值传递,引用传递
  • 原文地址:https://www.cnblogs.com/chaoren399/p/4768110.html
Copyright © 2020-2023  润新知