说明
对hive基本命令进行实战,要求本机安装着mysql和启动hdfs。
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,
并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,
不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
本地localhost模式安装hdfs
[java] view plain copy
//在“/home/hadoop/hadoop”目录下,解压hadoop-2.7.1.tar.gz,其它版本的也是一样的操作
>tar -xzvf hadoop-2.7.1.tar.gz
//修改"hadoop-2.7.1/etc/hadoop"下的"hdfs-site.xml"文件,修改副本数为1
<configuration>
<property>
<name>dfs.replication<www.dashuj5.com /name>
<value>1</www.baidu620.com value>
</property>
</configuration>
//修改当前目录下,"core-site.xml"文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
</property>
</configuration>
格式化文件系统
[java] view plain copy
>hadoop namenode -format
启动hdfs
[java] view plain copy
//方式1,cd到hadoop-2.7.1的bin目录下执行
> ./start-dfs.sh
//方式2,cdcd到hadoop-2.7.1的sbin目录下执行
//先启动namenode
>./hadoop-daemon.sh start namenode
//后启动datanode
>./hadoop-daemon.sh start datanode
查看hdfs,浏览器访问本机50070端口,单节点本地模式的hdfs启动成功
本地安装mysql(略)
本地安装hive
下载2.1.1版本的hive http://mirrors.hust.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
[java] view plain copy
//把hive tar.gz压缩包解压到你指定的目录下,我的在"/home/hadoop/hive"下
//解压后目录,/home/hadoop/hive/apache-hive-2.1.1-bin
//在"/home/hadoop/hive"下新建3个文件夹
//分别是日志文件夹,下载资源文件夹,中间结果临时文件目录
> mkdir log download tmp
//把mysql驱动jar包mysql-connector-java-5.1.17.jar放到hive主目录的lib文件夹下
修改hive的配置文件
[java] view plain copy
//在"apache-hive-2.1.1-bin/ www.baidu620.com conf"目录下,由"hive-default.xml.template"复制出一份配置文件,名称"hive-site.xml"
> cp hive-default.xml.template hive-site.xml
//修改以下几个标签中的值,它们没有在一起,剪切到一起后修改也可以,一处处修改也可
//分别指定数据库密码,数据库用户名,数据库地址和库名(要求我们先在mysql建一个空的库,名字自定义),驱动类名
<property>
<name>javax.jdo.option.ConnectionPassword<www.yongxinzaixian.cn /name>
<value>root</value>
<description>password to use against metastore database,mysql数据库密码</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.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.215:3306/hive2</www.meiwanyule.cn 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://www.feifanyule.cn myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</thd178.com value>
<description>Driver class name for a JDBC metastore<www.yongshiyule178.com /description>
</property>
修改"hive-site.xml"中日志、中间结果、下载资源文件目录,找到图中红圈value修改
[java] view plain copy
<!-- 修改中间结果目录-->
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hadoop/hive/tmp<www.078881.cn /value>
<description>Local scratch space for Hive jobs</description>
</property>
<!-- 修改下载资源目录-->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hadoop/hive/download</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<!-- 修改查询日志目录-->
<property>
<name>hive.querylog.location</name>
<value>/home/hadoop/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>
<!-- 修改server2 日志目录-->
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hadoop/hive/log</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
配置环境变量
[java] view plain copy
//创建hive目录的软连接,ln 创建连接命令 -s创建软连接 后面接原文件或目录路径 后面接目标文件名
> ln -s /home/hadoop/hive/apache-hive-2.1.1-bin/ hive
//配置环境变量
> vi /etc/profile
//在文件末尾添加
#配置hive
export HIVE_HOME=/home/hadoop/hive/hive
export PATH=$HIVE_HOME/bin:$PATH
hive基本命令
确保mysql hdfs启动的情况下,执行hive命令
[java] view plain copy
//查看hive版本
>hive --version
//命令框中输入hive,进入hive command
>hive
//创建库
hive> create database mydb;
会发现hdfs上生成了“mydb.db”文件
查看所有的数据库
[java] view plain copy
hive>show databases;
跟mysql命令一样
[java] view plain copy
//使用某个库
hive>use mydb;
//创建表
hive>create table t(id int,name string,age int);
//hive删除表
hive>drop table t;
hive>drop table mydb.t ;
//查看表中的内容
hive>select * from mydb.t ;