第六次
1. 启动
1.1. 检查 hosts
1.2. 启动 hbase 服务
1.2.1. 启动 hdfs
同时,保证 hdfs 中有一个 hbase 的目录项,若没有,则需要通过下面的命令创建
1.2.2. 启动 hbase
2. API 编程
2.1. 通过 maven 在项目中添加 hbase 依赖
pox.xml
的 <dependencies>
中加入下面的项,并刷新 maven
2.2. 尝试通过 API 连接 hbase
2.2.1. 在 hbase shell 中尝试建表
2.2.2. 编写 Java 代码
2.2.3. 通过 API 编程添加表和数据
创建表
将 admin
, conf
, conn
放入类的静态成员变量,并在 main
中初始化。
添加数据
读取数据
3. MapReduce 集成 HBase
3.1. 前期准备
3.1.1. 拷贝 hbase-site.xml
配置文件到 hadoop 的配置目录下。
3.1.2. 编辑 hadoop/etc/hadoop/hadoop-env.sh
3.1.3. 重启 hbase 和 hdfs
3.1.4. 测试命令
3.2. 综合应用
3.2.1. 批量导入数据
在 hbase 中创建 music 表
组织数据文件并上传到 hdfs 的 /musicdata
使用 hbase 的 importtsv 工具将数据导入
以下命令在一行内
参数 | 含义 |
---|---|
-Dimporttsv.bulk.output=tmp | 表示输出文件夹 |
-Dimporttsv.columns | 指定数据对应的含义 |
HBASE_ROW_KEY | 表示作为行键 |
music | 表示要存储的表名 |
/musicdata | 表示输入目录或文件 |
-Dcreate.table=yes | 表不存在时创建表 |
载入数据
使用 hbase 的 completebulkload 工具将数据载入 HRegion 中
参数 | 含义 |
---|---|
tmp | 上一步的输出目录 |
music | 目标表 |
通过 hbase shell 查看表内的详细信息
3.2.2. Hbase MapReduce API
添加依赖
3.2.3. 单一 Mapper 示例
编写代码,打包为 jar,上传到虚拟机后运行
序号 | 数据 |
---|---|
1 | RK[1] ,info:name song1 |
10 | RK[10] ,info:name song1 |
11 | RK[11] ,info:name song1 |
12 | RK[12] ,info:name song2 |
… | … |
3.2.4. MapperReducer 示例:统计各客户端播放次数
3.2.5. MapperReducer 示例:将 HDFS 中的格式文件写入
4. 作业 3
具体内容
所有评论数在 20+ 的电影中,评分最高的 10 部电影,输出其电影名和平均分
- 编写 MR 分别导入数据到 HBase 中
- 编程 MR 统计电影(输出电影编号、平均分)
- 读取文件,排序
- 根据编号查询 HBase 获取电影名
4.1. 程序目录结构
4.2. 将电影编号和名称读入 hbase
4.2.1. 调用 HBase API 编写程序
4.2.2. 导出包运行命令
4.2.3. 结果
4.3. 统计电影编号对应的评分
4.3.1. 调用 HBase API 编写程序
4.3.2. 导出包运行命令
4.3.3. 结果
4.4. 在本机上读取数据库并处理
4.4.1. 程序清单
数据结构
数据处理程序
4.4.2. 结果
在这里用了小根堆来排查,因此没有对他们进行排序。
电影名 | 评分 |
---|---|
Sanjuro (1962) | 4.608695652173913 |
Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954) | 4.560509554140127 |
Shawshank Redemption, The (1994) | 4.554557700942973 |
Godfather, The (1972) | 4.524966261808367 |
Close Shave, A (1995) | 4.52054794520548 |
Usual Suspects, The (1995) | 4.517106001121705 |
Schindler’s List (1993) | 4.510416666666667 |
Wrong Trousers, The (1993) | 4.507936507936508 |
Sunset Blvd. (a.k.a. Sunset Boulevard) (1950) | 4.491489361702127 |
Raiders of the Lost Ark (1981) | 4.477724741447892 |