说明

对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 ;