这几天学习了ApacheHadoop的大数据平台Cloudera Manager,不同于我之前使用的华为的大数据平台FusionInsight Manger,华为的大数据平台更加倾向于国企、政府公安还有一些大型公司,它的特点如下:1、可使用性高,华为研发人员已经把大数据平台封装好再去投入生产。2、后期售后质量高,当集群出现故障的时候,会有专门的运维人员进行维护。3、大数据平台性能高、稳定性好,一般华为的大数据平台都会搭配自己所研发的鲲鹏服务器,两者有着完美的契合度,使得在跑一些 MR任务上使得比同类的平台快点的道理。
但是华为大数据平台的价格昂贵,这点小微企业恐怕无法接受,接下来就是这次所讲的重点,ApacheHadoop的开源免费的大数据平台Cloudera Manager,只需要拥有三台服务器,就能搭建一个性能不错的大数据平台,并且是完全免费的,不需要投入过多的人力去维护它。
Server:Cloudera Manager 的核心是Cloudera Manager Server ,Server 管理控制台服务和托管应用程序逻辑,负责软件的安装、配置、服务的启动与关闭及管理集群。
Agent:安装在每台主机上。Agent负责进程的启动和停止,解压配置,触发安装及监控主机。
Management Service:由一组角色组成的服务,这些角色执行各种监视,警报和报告功能。
DataBase:存储配置及监控信息。
ClouderaRepository:Cloudera Manager 分发软件的存储库。
Clients:与Server交互的接口,有两部分,Admin Console :管理员web界面版。Api:用于开发者创建Cloudera Manager程序。
安装CDH节点推荐内存为64G,大部分内存被Cloudera Management Service 占用,因为做了大量的数据分析和整合。
如果实际的物理机器内存为32G,推荐cm Server内存为16G,cm Agent内存分别为4G。
如果实际的物理机器内存为16G,推荐cm Server内存为10G,cm Agent内存分别为2G。
如果实际的物理机器内存为12G,推荐cm Server内存为8G,cm Agent内存分别为2G。
如果实际的物理机器内存为8G,推荐cm Server内存为6G,cm Agent内存分别为2G。
这是针对目前个人pc机学习CDH使用来划分的,实际机器内存不足,需要在VM虚拟机中设置允许交换内存,这样就可以借用在VM虚拟机节点中的磁盘空间。
Cloudera Manager的安装主要是 系统环境的准备和 Cloudera Manager的安装,这边安装过程过于复杂而且是搬运的工作,大家如果有需要我这会有详细的文档和视频并且会有一些资料包。
在安装完Cloudera Manager之后可以根据自己的需求安装大数据组件 hive spark之类的,当然,也要根据电脑的性能配置去选择性的安装,毕竟它是一个会一直在跑的程序,十分吃资源。
下面我会介绍三种比较常用的 hue、impala和oozie。
HUE是一个开源的Apache Hadoop UI系统,早期由Cloudera开发,它是基于Python Web框架Django实现,后来贡献给开源社区。通过使用Hue我们可以通过浏览器方式操纵Hadoop集群,查看修改hdfs的文件,管理hive的元数据,运行Sqoop,编写Oozie工作流等大量工作。
登录hue之后,点击“Query Editors”->“Hive”,编写sql创建Hive表:
创建完成后,点击hive数据库刷新,可以看到刚才创建的Hive表:
创建表完成之后,可以点击“Metastore Manager”,点击刚才创建的表名,可以导入数据,选择的数据可以是HDFS中也可以是本地中的文件数据:
上传完数据之后,选择上传的数据,导入到表中。
点击浏览表中的数据如下:
点击“Query Editors”,在查询编辑器中执行查询sql语句:
之后sql语句之后,hql转换成MR作业,可以点击“Job Browser”查看任务:
点击点击“Query Editors”->“Hive”->“查看结果”,可以看到任务执行的结果:
可以创建新的文件,也可以修改,最好HDFS中大文件不要在hue中操作。hue中的用户默认是进入当前用户的主目录进行操作。
有了CDH大数据平台最好的这平台上操作,而不要在linux上操作,CDH会把操作修改的配置文件下发到所在的节点之中,并且具有稳定性
impala由Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。 基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。是CDH平台首选的PB级大数据实时查询分析引擎。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点就是基于内存处理数据,查询速度快。
Impala主要有Impalad、State Store 、Catlog和CLI组成:
impalad
与DataNode运行在同一节点上,由Impalad进程表示,它接收客户端的查询请求,读写数据,并行执行查询,并把结果通过网络流式的传送回给Coordinator,由Coordinator返回给客户端。同时Impalad也与State Store保持连接,用于确定哪个Impalad是健康和可以接受新的工作。
State Store
负责Quary的调度及跟踪集群中的Impalad的健康状态及位置信息,由statestored进程表示,它通过创建多个线程来处理Impalad的注册订阅和与各Impalad保持心跳连接,各Impalad都会缓存一份State Store中的信息,当State Store离线后,因为Impalad有State Store的缓存仍然可以工作,但会因为有些Impalad失效了,而已缓存数据无法更新,导致把执行计划分配给了失效的Impalad,导致查询失败。Impalad发现State Store处于离线时,会进入recovery模式,反复注册,当State Store重新加入集群后,自动恢复正常,更新缓存数据。
Catlog
当Impala集群启动后,负责从Hive MetaStore中获取元数据信息,放到impala自己的catalog中。
CLI
命令行客户端,提供给用户查询使用的命令行工具。
相同点
impla与Hive使用相同的元数据,都支持将数据存储在HDFS和Hbase中,都是对SQL进行词法分析生成执行计划。
不同点
Oozie是用于 Hadoop 平台的开源的工作流调度引擎。 用来管理Hadoop作业。 属于web应用程序,由Oozie client和Oozie Server两个组件构成。 Oozie Server是运行于Java Servlet容器(Tomcat)中的web程序。相当于一个web ui。