小云云

使用spark加载并读取parquet格式的文件——之使用scala版

前言

It has been a long time.

最近有需求读取并测试parquet格式的文件。目前hive、impala、spark等框架均支持parquet。

本文是采用scala接口的spark进行简单的hello world。

进入spark-shell环境

注意:

  1. 输出可以看到这里用的是spark1.3.1
  2. spark-shell自动为你注册了Spark context,该对象名字为:sc。后面直接使用sc对象进行设置。
  3. 看到scala提示符,就意味着可以进行编程测试了。

注册SQLContext并进行配置

步骤:

  1. 使用sc(Spark context)对象注册SQLContext
  2. 使用setConf对SQLContext进行配置
  3. 可配置的参数见:http://spark.apache.org/docs/1.3.1/sql-programming-guide.html#parquet-files
  4. 可配置的参数在1.5.1的最新版本中增加了很多

导入parquet文件

导入文件:

打印parquet文件的schema:

注意:如果sqlContext.setConf(“spark.sql.parquet.binaryAsString”,”false”),则列数据类型将为原始的binary。这里自动进行了转换。

将parquet文件注册为临时表

parquet表的DML操作

执行sql:

遍历结果:

 

 

 

 

 

【翻译】HBase 集群安装与配置

单机模式安装、启动 HBase

安装 HBase Master

安装HBase Master

 启动HBase Master服务

安装及启动HBase Thrift Server

安装HBase Thrift Server

启动HBase Thrift Server

安装配置HBase REST

安装HBase REST

配置REST端口(如果采用默认的60050则不需配置)

修改hbase-site.xml

启动HBase REST

安装至此,即可单机享用HBase。

HBase分布式安装配置

集群机器规划

按照以下规划安装对应的软件包

Node Name Master ZooKeeper RegionServer

hadoop01

yes

yes

no

hadoop02

backup

yes

yes

hadoop03

no

yes

yes

安装软件包命令

master

 region server

准备hadoop01

配置region server

编辑/etc/hbase/conf/regionservers,添加hadoop02、03.

配置hadoop02为backup master

新增文件/etc/hbase/conf/backup-masters,添加一行hadoop02

配置HBase为分布式模式

编辑/etc/hbase/conf/hbase-site.xml

配置zookeeper

/etc/hbase/conf/hbase-site.xml添加参数

其中dataDir参数参考本机的/etc/zookeeper/conf/zoo.cfg

在HDFS上创建/hbase目录

配置hadoop02、03

拷贝hadoop01配置文件到02、03

分别启动服务

在hadoop01、02启动hbase-master

在hadoop02、03启动hbase-regionserver

检查服务状态

在各服务器执行:jps

hadoop01:

hadoop02:

hadoop03:

参考

单机模式安装、启动 HBase:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hbase_standalone_start.html

HBase分布式安装配置:http://hbase.apache.org/book.html#_introduction

HBase分布式安装配置(伪分布式):

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hbase_pseudo_configure.html

 HBase分布式安装配置(伪分布式->集群):

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hbase_cluster_deploy.html

 

【翻译】hbase installation

原文:(安装)http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hbase_install.html

(BlockCache)http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/admin_hbase_blockcache_configure.html

Installing HBase(安装Hbase)

配置HBase(Configuration Settings for HBase)

使用hdfs的线程数参数(Using dfs.datanode.max.transfer.threads with HBase)

HDFS datanode有最大伺服文件数限制。该上限由dfs.datanode.max.transfer.threads参数控制。在加载HBase之前,确认已经在$HADOOP_HOME/conf/hdfs-site.xml文件中配置了该参数:

将配置文件发送到集群,并重启HDFS以生效。

否则会报与block相关的奇怪错误。

配置HBase的BlockCache(Configuring the HBase BlockCache)

扩展阅读:

堆内存与堆外内存:http://bananalighter.com/java-off-heap-on-heap/

块缓存1:http://www.cnblogs.com/panfeng412/archive/2012/09/24/hbase-block-cache-mechanism.html

块缓存2:http://punishzhou.iteye.com/blog/1277141

HBase提供了堆内存及堆外内存两种块缓存的实现。

堆内存:默认的堆内存块缓存实现是LruBlockCache(java)。桶缓存可以用堆内存,也可以用堆外内存。

结合:如果操作的数据超出堆容量,可以使用桶缓存作为堆内存LruBlockCache的二级缓存(L2 cache)。这个实现在CombinedBlockCache中有涉及。

 

 

 

 

 

 

 

 

 

【翻译】部署hive

安装及配置Metastore:

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hive_metastore_configure.html

安装及配置HiveServer2:

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hiveserver2_configure.html

配置hive运行内存:

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hive_install.html

预安装环境参考:

yarn:http://bananalighter.com/cdh-yarn-installation/

zookeeper: http://bananalighter.com/cdh-install-zookeeper

物理环境:hadoop01、02、03三台机器。

1.Hive metastore server安装

(1) 安装hive包

选用hadoop01作为元数据服务所在机器,安装hive-metastore

yum install hive-metastore hive-server2

(2) 在hadoop02上安装metastore所用的mysql数据库

(3) 修改hive-site.xml参数

参照1-(1)表修改参数。

注意以下参数请根据自己实际情况填写,主机、账号及密码不要搞错。

javax.jdo.option.ConnectionURL jdbc:mysql://hadoop01/metastore
javax.jdo.option.ConnectionUserName hive
javax.jdo.option.ConnectionPassword yourpassword
hive.metastore.uris thrift://hadoop01:9083

(4) 创建metastore所用的mysql实例及账号

数据库的示例脚本位置为:/usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql;

注意hive schema的版本应该与metastore一致,否则会报schema的错。

2.安装Hive server2

(1) 安装hive包

为三台测试机hadoop01~03安装hive server2。

(2) 配置到zookeeper的连接参数

参考表中的内容配置hadoop01。

与Hive server2有关的配置
hive.support.concurrency true Enable Hive’s Table Lock Manager Service
hive.zookeeper.quorum hadoop01,hadoop02,hadoop03 Zookeeper quorum used by Hive’s Table Lock Manager
hive.zookeeper.client.port 2181 The port at which the clients will connect.

然后拷贝hive-site.xml文件到hadoop02、hadoop03的对应位置。

本步骤未正确配置会引发hive server无法获得锁的错误。

3.创建Hive在hdfs上的工作目录

在hdfs上创建 /user/hive/warehouse目录,并将权限修改为1777.

该目录为hive的默认工作目录。如果需要指定,则需要在hive-site.xml文件中配置参数:hive.metastore.warehouse.dir

4.启动hive metastore及hive server2

(1) 启动metastore service

在hadoop01上执行:

(本步骤需要正确部署zookeeper,zookeeper部署参考文初链接)

(2) 启动hive server2

在hadoop01-03上执行:

(3) 检查日志

检查/var/log/hive目录下*.log文件内容有无异常、报错。有就搜索引擎解决吧。

5.使用配置

(1) reducer设置

参数:hive.exec.reducers.bytes.per.reducer

说明:每个reducer读取的字节数大小。假如输入是10G,本属性值为1G,则系统将会分配10个reducer。

修改方法:

编辑hive-site.xml,添加:

重启HiveServer2生效。

参数:mapred.reduce.tasks

说明:设置reducer任务数量。设置-1则系统自动根据情况

修改方法:

编辑hive-site.xml,添加:

重启HiveServer2生效。

(2) HiveServer2内存

拷贝/etc/hive/conf/hive-env.sh.template 为/etc/hive/conf/hive-env.sh

下面的例子配置HiveServer2及Metastore的运行内存为2G,hive client的总内存为2G

重启HiveServer2及Metastore生效。

(3) 关闭任务推测式执行

修改hive-site.xml文件,添加:

重启HiveServer2生效

修改mapred-site.xml文件,添加:

重启hadoop-yarn-resourcemanager生效

(4) cli设置

编辑hive-site.xml,添加:

展示效果:

 

 

 

 

 

HiveQL

参考链接:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

1.数据定义语言(DDL)

  • 创建、修改、删除数据库

创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name

[COMMENT database_comment]

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, …)];

语法解释:

  • 数据库注释:COMMENT
  • 在hdfs上的路径: LOCATION
  • 使用Key-value的方式为数据库注释

使用实例:

create database lesson1test comment ‘lesson1test’ with dbproperties(‘user’=’banana’);

修改数据库的key-value注释

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, …);

— (Note: SCHEMA added in Hive 0.14.0)

修改数据库的用户

ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;

— (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)

删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

使用实例

alter database lesson1test set dbproperties(‘user’=’lighter’);

alter database lesson1test set owner user hdfs;

drop database if exists lesson1test;

  • 创建、截断、删除表(带分区)

创建表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name

[(col_name data_type [COMMENT col_comment], …)]

[COMMENT table_comment]

[PARTITIONED BY (col_name data_type [COMMENT col_comment], …)]

[

[ROW FORMAT row_format]

[STORED AS file_format]

| STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)]  — (Note: Available in Hive 0.6.0 and later)

]

[LOCATION hdfs_path]

语法解释:

  • 是否是外部表: EXTERNAL
  • 表格注释: COMMENT
  • 定义分区信息:PARTITIONED BY
  • 行格式化方式(1.决定了是否使用hive自带的序列化函数2.可用于指定属性分隔符): ROW FORMAT

创建表使用实例:

CREATE TABLE goods_price(

id INT,

name STRING,

price FLOAT

)

COMMENT ‘Goods table’

PARTITIONED BY(supplier STRING, class_name STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,’

STORED AS TEXTFILE;

复制表结构:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name

LIKE existing_table_or_view_name

[LOCATION hdfs_path];

使用实例:

create table if not exists copy_table like lesson1.goods_price;

截断表(保留表结构,删除数据):

TRUNCATE TABLE table_name [PARTITION partition_spec];

partition_spec:

(partition_column = partition_col_value, partition_column = partition_col_value, …)

使用实例(可指定一个partition_column,也可都指定):

truncate table copy_table partition (supplier=’yihaodian’,class_name=’shupian’);

truncate table copy_table partition (supplier=’yihaodian’);

删除表(任何删除动作都会删除相关的元数据):

DROP TABLE [IF EXISTS] table_name [PURGE];     — (Note: PURGE available in Hive 0.14.0 and later)

语法解释:

不指定PURGE,则被删除数据被移到.Trash/Current。

使用PURGE则直接删除(不可恢复)。

使用实例:

drop table if exists copy_table;

  • 修改表、分区、列

修改表名(保留表结构,删除数据):

ALTER TABLE table_name RENAME TO new_table_name;

使用实例:

alter table goods_price rename to new_goods_price;

增加表分区(未修改表结构,只是多了一个分区值):

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec

[LOCATION ‘location1’] partition_spec [LOCATION ‘location2′] …;

partition_spec:

: (partition_column = partition_col_value, partition_column = partition_col_value, …)

使用实例:

alter table new_goods_price add if not exists partition (supplier=’taobao’,class_name=’shupian’);

alter table new_goods_price add if not exists partition (supplier=’jingdong’,class_name=’shupian’) location ‘/user/hive/warehouse/lesson1.db/goods_price/supplier=jingdong/class_name=shupian’;

表知识扩展——内部表和外部表

表类型 语句 是否将数据拷贝到warehouse 删除表是否删除数据
内部表 create table;
外部表 create external table;

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径。

内部表不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据

表知识扩展——表分区

意义:避免全表扫描。Where语句采用分区限定的话,表查询会限制在分区内进行,提高效率和准确率。

  • 数据通过存储目录划分分区。
  • 指定多个分区时,hdfs上存储目录按照分区创建顺序形成树形结构。
  • 分区字段的选择:时间段、不同服务的数据、IP段等等。

两个分区时的二级树形存储目录(先supplier后class_name),由下图可见supplier目录是class_name的上级目录。

QQ截图20150330151934

2.数据操作语言(DML)

  • 文件数据导入表

命令:

LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 …)]

语法解释:

  • 指定数据文件目录: INPATH
  • 覆盖原有数据: OVERWRITE
  • 指定分区(顺序无先后,但需要明确指定每一个分区)

partition(supplier=’yihaodian’,class_name=’niunai’);

使用实例:

load data local inpath ‘/tmp/20150313/niunai’ into table goods_price partition(supplier=’yihaodian’,class_name=’niunai’);

  • 查询结果数据插入表

命令(增加数据):

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 …)] select_statement1 FROM from_statement;

使用实例:

insert into table copy_table partition(class_name=’niunai’,supplier=’yihaodian’) select id,name,price from goods_price;

命令(覆盖原有数据):

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 …) [IF NOT EXISTS]] select_statement1 FROM from_statement;

使用实例:

insert overwrite table copy_table partition(class_name=’niunai’,supplier=’yihaodian’) select id,name,price from overwrite_table;

  • UPDATE&DELETE

命令:

UPDATE tablename SET column = value [, column = value …] [WHERE expression]

DELETE FROM tablename [WHERE expression]

使用实例:

Hive 0.14支持,目前最新发行版为Hive 0.13

 

安装HUE

Configuring CDH Components for Hue

参考:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_cdh_hue_configure.html

Hue install

HttpFS Configuration

配置HUE成为其他用户及组的代理,HUE将接管其他用户的任意动作。

HttpFS: Verify that /etc/hadoop-httpfs/conf/httpfs-site.xml has the following configuration:

Verify that core-site.xml has the following configuration:

如果需要新添上述参数,则要重启hadoop以生效。

root下编辑/etc/hue/conf.empty/hue.ini

更新hadoop.hdfs_clusters.default.webhdfs_url参数(直接在文中搜索webhdfs_url)。

将webhdfs_url参数改为如下(注意是14000端口):

Hive Configuration

HUE需要指向HiveServer2。因此需要更新hue.ini如下:

 Start Hue server

 

 

 

 

【翻译】Hive 架构设计

原文:https://cwiki.apache.org/confluence/display/Hive/Design

system_architecture

Hive 架构

图左展现了Hive的组件及其与hadoop的接口。

  • UI——用户接口。将用户查询或其他操作提交到系统。2011年以后拥有命令行接口及基于web的图形化接口。
  • Driver——接收查询的组件。它实现了会话操作的概念,提供了可基于JDBC/ODBC接口执行及获取API的模型。
  • Compiler——解析查询,在metastore的表和分区metadata的帮助下,对不同查询块、查询表达式进行语义分析,最终生成执行计划。
  • Metastore——存储仓库中不同表及分区,包括列及列属性的全部的结构信息。串行器及解串行器需要读写数据及存储对应数据的HDFS文件。
  • Execution Engine——执行Compiler产生的执行计划。执行计划是各阶段的有向无环图。执行引擎管理不同阶段的依赖,并在恰当的系统组件上执行前述阶段。

上图同时展现了一次查询的处理过程。UI调用了Driver的执行接口(step 1)。Driver创建了一个查询会话,并将查询发送给Compiler来生成执行计划(step 2)。Compiler从metastore中获取必要的元数据(steps 3和4)。元数据用来检查查询树中的表达式格式,并根据查询预期来削减分区。Compiler产生的执行计划(step 5)是map或reduce各种任务阶段的有向无环图,是一次元数据操作或者HDFS的操作。对map/reduce阶段来说,执行计划包含map的执行树(执行树在mappers上执行)以及reduce的执行树(需要reducers的操作)。执行引擎将各种状态提交给恰当的组件(steps 6, 6.1, 6.2 and 6.3)。每个任务中关联了表或中间输出的解串器被用于从HDFS中读取行,前述操作过程将通过相应的操作树。一旦产生了输出,结果会被串行器写入HDFS的临时文件(发生在不需要reduce的mapper中)。临时文件用于向随后的map/reduce执行计划阶段提供数据。DML操作的最终临时文件将被移动到表所在位置,保证脏数据不会被读取到。对于查询来讲,临时文件的内容是作为Driver获取命令的一部分,由执行引擎直接从HDFS读取的(steps 7、8和9)。

Hive 数据模型

Hive中的数据组织形式为:

  • 表——与关系型数据库中的表类似。可以过滤、投影、连接和合并。此外,表中所有数据存储在HDFS中。Hive同时支持外部表的概念,一个表可以在一个已存在的HDFS文件或目录上创建,方式是向表格创建DDL提供对应的目录。表内行的组织形式为各数据类型的列,与关系型数据库类似。
  • 分区——每个表可以拥有一到多个分区键,用来定义数据储存方式。例如:表T的数据分区ds用于存储日期,其数据文件在HDFS上存储目录为:<table location>/ds=<date>。分区使得系统可以通过查询预测减少检索的数据量。例如:一个针对T表中行的查询,如果符合T.ds = ‘2008-09-01’ 的预期,则仅需要查找 <table location>/ds=2008-09-01/ 目录下的文件。
  • 桶——(你们大学计算机数据结构课程的内容终于用上了!)请参考桶排序与哈希表的相关知识。在Hive中,每个桶作为分区目录中的一个文件存储。桶使得系统可以依据数据例子迅速定位查询(有一些查询是使用表上的SAMPLE字句完成的)。

除了常见的列数据类型(整数、浮点数、字符串、日期和布尔值),Hive同时支持数组和图。此外,用户可以组合基本类型来自定义数据类型。类型系统与序列化及对象检查器接口(object inspector interfaces)紧密捆绑。用户可以通过实现对象检查器来创建类型,使用对象检查器可以实现对象在HDFS上的序列化。前述两个接口使得Hive具有了扩展能力,使得Hive可以理解其他数据格式及复杂类型。内建对象检查器为创建复杂类型提供了基础类型。图和数组格式内建了诸如大小、索引等功能。内嵌数据类型通过圆点查看,例如a.b.c = 1, 这个公式查看了a的b域内的c域,并与1进行比较。

METASTORE

 动机

元数据存储提供了两个重要却常被忽视的数据仓库功能:数据抽象及数据发现。

数据抽象:如果没有Hive提供的数据抽象功能,用户需要在查询的时候同时提交数据格式、数据提取器及数据装载信息。在Hive中,前述数据在表创建时即给出,每次表被引用时都会重用。这与传统数据仓库很相似。

数据发现:使得用户可以发现及浏览数据仓库中的相关或者特定数据。可以使用元数据构建其他工具来对外提供数据,丰富数据信息,提高可用性等。

Hive通过提供元数据仓库实现了前述两大功能。元数据仓库服务与Hive查询进程紧密集成在一起,因此hive数据及其元数据是同步的。

Metadata Objects

  • 数据库——表命名空间。未来可用作管理单元。非用户提供的表将放入default数据库。
  • 表——一张表的元数据包括列的清单,所有人信息,存储信息,还包括序列化信息。还可以包含任何用户提供的键值、数据值。存储信息包含其下数据的存储路径、文件输入输出格式及桶信息。序列化信息包括串行器解串器的实现类,以及其他实现所需信息。所有信息都可以在建表时指定。
  • 分区——每个分区可以拥有自己的列、序列化及存储信息。

Metastore Architecture

元数据存储是数据库或文件对象的存储仓库。数据库备份仓库采用……(这段翻译的性价比有点低,意会吧)

Hive Query Language

HiveQL是类SQL语言。创建表,表载入数据,表查询上与SQL语法类似。允许用户嵌入MapReduce脚本。兼容任何语言编写的,使用简单行数据流接口的脚本——从标准输入读入行,向标准输出写入行。另一个HiveQL独有的特性是多表插入(理解为将一份输入看成多个表,提供给多个查询请求,而且其扫描过程还是共享的:扫一次,提供给多个查询)。这个概念中,用户可以对一个输入使用一条HiveQL语句执行多种查询。Hive优化了查询,可以在多个查询中共享对输入数据的扫描,这将查询的吞吐能力提高了几个量级。其他内容见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual。

Compiler

  • 语法分析器——将查询字符串转化为语法分析树的表述。
  • 语义分析器——将语法分析树转化为内部查询表述(依然基于块而不是执行树)。
  • 逻辑计划发生器——将内部查询表述转化为逻辑计划,逻辑计划由执行器的树组成。
  • 查询计划发生器——将逻辑计划转化为一系列的MapReduce任务。

 

 

cdh zookeeper安装

一、安装zookeeper包

在hadoop01~03上安装:

二、生成myid

hadoop01:

hadoop02:

hadoop03

三、编辑配置文件(以下是默认参数)

/etc/zookeeper/conf/zoo.cfg

四、测试zookeeper

 

参考:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_zookeeper_package_install.html

 

 

【翻译】安装Hive

参考:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hive_install.html

一、安装Hive

1.安装hive包

2.配置hive组件的堆大小及垃圾回收(暂时保持默认)

 

二、配置Hive元存储

Hive元数据服务使用关系型数据库存储Hive表及分区的信息。使用元数据服务API对外提供前述信息的客户端连接。接下来的部分介绍部署选项及推荐配置。

1.元数据部署模式

嵌入式模式

hive_embeddedmetastore

 

默认安装模式。将元数据存储在derby中。数据库及及元数据服务都嵌入在HiveServer进程中,随HiveServer一起启动。这种模式配置最简单,但同时仅支持一个活动用户,不能用于生产。

本地模式

hive_localmetastore

Hive元数据服务内嵌在HiveServer中,但元数据数据库在单独进程中执行,并可以在分离的主机上。内嵌的元数据服务通过JDBC与元数据数据库通信。

远程模式(CDH推荐的生产环境部署方案)

hive_remotemetastore

元数据服务在独立的JVM进程中,HiveServer2, HCatalog, Cloudera Impala™,及其他进程与元数据服务通过网络API(通过 hive.metastore.uris 参数进行配置)通信。元数据服务通过JDBC与元数据数据库通信(通过 javax.jdo.option.ConnectionURL 参数进行配置)。元数据服务、元数据数据库及HiveServer可以在同一主机上运行,但是将HiveServer分离到单独的主机可以提供更好的可用性和扩展性。

远程模式较之本地模式先进之处在于:远程模式不需要管理员为每一个Hive用户共享JDBC登陆信息。HCatalog需要这种模式。

2.安装元数据数据库

 (1)安装mysql

 (2)创建mysql实例及账号

3.配置元数据服务相关参数(hive-site.xml)

配置连接到mysql数据库的参数。可以将此配置文件传播到每一台hive主机上。每一台Hive的相关主机(client, metastore, HiveServer)都需要配置hive.metastore.uris。该文件中其他的参数仅用于配置metastore服务所在主机。

 三、配置HiveServer2

1.向hive-site.xml添加参数

适当的配置Hive表锁管理器。这需要安装zookeeper。

2.创建hive在hdfs上的工作目录

在hdfs上创建 /user/hive/warehouse目录,并将权限修改为1777。

四、打开服务

1.启动元数据服务

在hadoop01上:

2.启动hive server2

在hadoop01~03上:

3.检查启动日志(/etc/hive/conf/hive-site.xml),没有报错则可测试hive。

五、测试使用

 1.测试连接

 2.测试执行

 

大功告成。

 

 

 

 

 

【翻译】在集群上部署MapReduce v2 (YARN)

原文:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_yarn_cluster_deploy.html#topic_11_4

环境hadoop01~03三台机器,其中hadoop01为rm及JobHistory Server。

一、修改mapred-site.xml

在configuration之间添加内容(标明使用yarn代替MapReduce1的框架功能):

二、yarn-site.xml中一定要配的参数

1.添加以下内容以确保ResourceManager配置到正确的主机(日志位置要对应在hdfs上创建好目录,否则执行时会无报错的卡住)。

2.创建对应的hdfs上的目录

三、配置history server

如果在集群上使用YARN代替MRv1. 需要运行MapReduce JobHistory server。

1.以下是需要配置到mapred-site.xml文件的参数。

Property

Recommended value

Description

mapreduce.jobhistory.address

historyserver.company.com:10020

The address of the JobHistory Server host:port

mapreduce.jobhistory.webapp.address

historyserver.company.com:19888

The address of the JobHistory Server web applicationhost:port

In addition, make sure proxying is enabled for the mapred user; configure the following properties in core-site.xml:

2.在core-site.xml文件中配置以下参数,以确保mapred用户的代理功能可用。

Property

Recommended value

Description

hadoop.proxyuser.mapred.groups

*

Allows the mapreduser to move files belonging to users in these groups

hadoop.proxyuser.mapred.hosts

*

Allows the mapreduser to move files belonging on these hosts

JobHistory Server的参考:http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-jobhistory-log/

3.创建对应的目录

四、配置staging 目录

1.配置mapred-site.xml文件

2.创建hdfs上的目录

五、将各配置文件部署到其余两个节点

六、安装启停脚本

1.在hadoop01上安装ResourceManager的启停脚本,JobHistory Server的启停脚本

2.在hadoop01~3上安装NodeManager的启停脚本

七、启动

1.在hadoop01上启动Resource Manager

2.在hadoop01~3上启动nodemananger

3.启动JobHistory Server

三、测试yarn

1.建立测试目录及文件

2.YARN测试

3.查看结果

四、故障及排除

1.卡map0% reduce0%:

hdfs namenode -format

删除datanode在本地的存储

2.卡map 100% reduce0%

修改/etc/hosts

删掉各种域,变为: