01 Nov 2022
在极客时间上学习elasticsearch
课程,主要关注点在query
的DSL
语句以及集群的管理,在本地基于es 7.1
来构建集群服务,启动脚本如下,同时在conf/elasticsearch.yml
中添加xpack.ml.enabled: false
、http.host: 0.0.0.0
的配置(禁用ml
及启用host
):
bash> bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -d
bash> bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -d
bash> bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -d
bash> bin/elasticsearch -E node.name=node3 -E cluster.name=geektime -E path.data=node3_data -d
在docker
容器中启动cerebro
服务,用于监控elasticsearch
集群的状态,docker
启动命令如下:
bash> docker run -d --name cerebro -p 9100:9000 lmenezes/cerebro:latest
文档index基础操作
1) elasticsearch
中创建新文档,用post
请求方式,url
内容为index/_doc/id
。当未指定{id}时,会自动生成随机的id
。put
方式用于更新文档,当PUT users/_doc/1?op_type=create
或PUT users/_create/1
指定文档id
存在时,就会报错。
POST users/_doc
{
"user": "mike",
"post_date": "2019-04-15T14:12:12",
"message": "trying out kibana"
}
22 Jan 2022
在Hadoop
大数据平台及生态系统中,使用mapreduce
模型进行编程,对广大用户来说,仍然是具有挑战性的任务。人们希望使用熟悉的SQL
语言,对hadoop
平台上的数据进行分析处理,这就是SQL On Hadoop
系统诞的背景。
SQL on Hadoop
是一类系统的简称,这类系统利用Hadoop
实现大量数据的管理,具体是利用HDFS
实现高度可扩展的数据存储。在HDFS
之上,实现SQL
的查询引擎,使得用户可以使用SQL
语言,对存储在HDFS
上的数据进行分析。
Apache Hive
的产生
Hive
是基于Hadoop
的一个数仓工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的类SQL(HQL)
查询功能,可以将HQL
语句转换成为MapReduce
任务进行运行。使用类SQL
语句就可快速实现简单的MapReduce
统计,不必开发专门的MapReduce
应用。Apache Hive
是由Facebook
开发并开源,最后贡献给Apache
基金会。
Hive
系统整体3
个部分:用户接口、元数据存储、驱动器(Driver
)在Hadoop
上计算与存储。
07 Nov 2021
在Hadoop V1.0
版本中,资源调度部分存在扩展性差、可用性差、资源利用率低的改问题,其中,Job Tracker
既要做资源管理,又要做任务监控,同时Job
的并发数页存在限制。同时,JobTracker
存在单点故障问题,任务调度部分不支持调度流式计算、迭代计算、DAG模型。
2013
年,Hadoop 2.0
发布,引入了Yarn
、HDFS HA
、Federation
。
Yarn的设计思路(Yet Another Resource Manager)
Yarn
由三部分组成:ResourceManager
、NodeManager
、ApplicationMaster
,其中:RM
掌控全局的资源,负责整个系统的资源管理和分配(处理客户端请求、启动/监控AM
和NM
、资源调度和分配),NM
驻留在一个YARN
集群的节点上做代理,管理单个节点的资源、处理RM
、AM
的命令,AM
为应用程序管理器,负责系统中所有所有应用程序的管理工作(数据切分、为APP
申请资源并分配、任务监控和容错)。
Yarn
主要解决数据集群资源利用率低、数据无法共享、维护成本高的问题,常见的应用场景有:MapReduce
实现离线批处理、Impala
实现交互式查询分析、用Strom
实现流式计算、在Spark
下来完成迭代计算。
09 Aug 2021
Hadoop
是Apache
的一个开源的分布式计算平台,以HDFS
分布式文件系统和MapReduce
计算框架为核心,为用户提供一套底层透明的分布式基础设施。
MapReduce
提供简单的API
,允许用户在不了解底层细节的情况下,开发分布式并行程序。利用大规模集群资源,解决传统单机无法解决的大数据处理问题,其设计思想起源于MapReduce Paper
。
MapReduce编程模型
MapReduce
是一种用于处理和生成大型数据集的编程模型和相关实现,用户指定一个map()
函数接收处理key/value
对,同时产生另外一组临时key/value
集合,reduce()
函数合并相同intermediate key
关联的value
数据,以这种函数式方风格写的程序会自动并行化并在大型商品机器集群上运行。
在Paper
发布之前的几年,Jeffrey Dean
及Google
的一些工程师已经实现了数百个用于处理大量原始数据且特殊用途的计算程序,数据源如抓取的文档、Web
日志的请求等,来计算各种派生数据,像倒排索引、Web
文档图结构的各种表示、每个主机爬取的页面数汇总等。
看个统计单词在文章中出现的次数的例子,map()
函数emit
每个单词及其出现次数,reduce()
函数统计按单词统计其出现的总次数,伪代码如下:
map(String key, String value):
// key: document name
// value: document contents for each word w in value:
EmitIntermediate(w, "1");
reduce(String key, Iterator values): // key: a word
// values: a list of counts
int result = 0;
for each v in values: result += ParseInt(v);
Emit(AsString(result));