全部博文(167)
分类: 云计算
2011-08-17 18:53:40
具体介绍请看:
具体架构是:
主要分为以下几个部分:
3.Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库
在原数据的存储中,本文章使用第二种模式。
使用的包有:
1.hive-0.6.0.tar.gz 2.mysql-5.5.9-linux2.6-x86_64.tar.gz 3.mysql-connector-java-5.1.11-bin.jar
配置步骤:
1.cd /data && tar -zxvf hive-0.6.0.tar.gz && mv mysql-connector-java-5.1.11-bin.jar hive-0.6.0/lib
2. chown -R hadoop:hadoop hive-0.6.0
3. cd /data/hive-0.6.0/conf && vi hive-site.xml
//以下是配置mysql jdbc的数据源,按需填写
4.vi hive-log4j.properties
在这里我只配置:hive.log.dir=/data/hive-0.6.0/log //目录需存在
可以不进行配置,默认为/tmp/${system user}
5. useradd mysql
6. cd /data && tar -zxvf mysql-5.5.9-linux2.6-x86_64.tar.gz && ln -s /data/mysql-5.5.9-linux2.6-x86_64 /usr/local/mysql
7. chown -R mysql:mysql /usr/local/mysql /data/mysql-5.5.9-linux2.6-x86_64
8. 配置/etc/my.cnf
9.cd /data/mysql-5.5.9-linux2.6-x86_64/ && MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0scripts/mysql_install_db --user=mysql
10. /etc/init.d/mtysql.server start
11.bin/mysql -u root //按需修改root密码 这里省略
12. mysql>CREATE USER 'hadoophive'@'%' IDENTIFIED BY '123456';
13. mysql>GRANT ALL PRIVILEGES ON *.* TO 'hadoophive'@'%'
到这里你可以启动hive,如果启动后能登陆出现hive>,那安装算告一段落了
14.cd /data/hive-0.6.0/bin && ./hive --service hiveserver 10000 > /data/hive-0.6.0/logs/stdout_${_time}.log 2> /data/hive-0.6.0/logs/stderr_${_time}.log &
15.cd /data/hive-0.6.0/bin && ./hive
结果如下:
[hadoop@hadoop-237-13 bin]$ ./hive
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201108171926_25725236.txt
hive>
额外测试:
一。创建表
1.hive>create table test(id INT,name STRING);
2.show tables;
出现你的表就代表操作成功。
二。使用外部数据
$HADOOP_HOME/bin/hadoop fs -mkdir /img
$HADOOP_HOME/bin/hadoop fs -put access.log /img
hive>CREATE EXTERNAL TABLE IMG_ANA(clientIp STRING,tmp1 STRING,tmp2 STRING,time STRING,finename STRING,status STRING,size INT,reffer STRING,useragent STRING,tmp3 STRING,machineip STRING,mastatus STRING,tmp4 INT,tmp5 STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY "|" STORED AS TEXTFILE LOCATION '/img/acchive';
具体参数语法请查看
Create Table CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]
CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常。
EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数 据会被一起删除,而外部表只删除元数据,不删除数据。
LIKE 允许用户复制现有的表结构,但是不复制数据。
用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。
如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。
有分区的表可以在创建的时候使用 PARTITIONED BY 语句。一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下。而且,表和分区都可以对某个列进行 CLUSTERED BY 操作,将若干个列放入一个桶(bucket)中。也可以利用SORT BY 对数据进行排序。这样可以为特定应用提高性能。
表名和列名不区分大小写,SerDe 和属性名区分大小写。表和列的注释是字符串。
$HADOOP_HOME/bin/hadoop fs -ls /img 能看出/img/acchive证明创建成功
再做一次数据导入$HADOOP_HOME/bin/hadoop fs -put access.log /img/acchive
hive>select * from iIMG_ANA limit 10;返回数据则为成功啦。
hive搭建很简单,要看看如何使用起来才行