Lanyon 记录下日常工作与学习哈~,还有技术分享哦。。🎉

Elasticsearch核心技术与实战

在极客时间上学习elasticsearch课程,主要关注点在queryDSL语句以及集群的管理,在本地基于es 7.1来构建集群服务,启动脚本如下,同时在conf/elasticsearch.yml中添加xpack.ml.enabled: falsehttp.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}时,会自动生成随机的idput方式用于更新文档,当PUT users/_doc/1?op_type=createPUT users/_create/1指定文档id存在时,就会报错。

POST users/_doc
{
  "user": "mike",
  "post_date": "2019-04-15T14:12:12",
  "message": "trying out kibana"
}

ReadMore »

大数据时代数据仓库Hive

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上计算与存储。

ReadMore »

大数据三架马车之Yarn、BigTable

Hadoop V1.0版本中,资源调度部分存在扩展性差、可用性差、资源利用率低的改问题,其中,Job Tracker既要做资源管理,又要做任务监控,同时Job的并发数页存在限制。同时,JobTracker存在单点故障问题,任务调度部分不支持调度流式计算、迭代计算、DAG模型。

2013年,Hadoop 2.0发布,引入了YarnHDFS HAFederation

Yarn的设计思路(Yet Another Resource Manager)

Yarn由三部分组成:ResourceManagerNodeManagerApplicationMaster,其中:RM掌控全局的资源,负责整个系统的资源管理和分配(处理客户端请求、启动/监控AMNM、资源调度和分配),NM驻留在一个YARN集群的节点上做代理,管理单个节点的资源、处理RMAM的命令,AM为应用程序管理器,负责系统中所有所有应用程序的管理工作(数据切分、为APP申请资源并分配、任务监控和容错)。

Yarn主要解决数据集群资源利用率低、数据无法共享、维护成本高的问题,常见的应用场景有:MapReduce实现离线批处理、Impala实现交互式查询分析、用Strom实现流式计算、在Spark下来完成迭代计算。

ReadMore »

大数据三架马车之MapReduce

HadoopApache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce计算框架为核心,为用户提供一套底层透明的分布式基础设施。

MapReduce提供简单的API,允许用户在不了解底层细节的情况下,开发分布式并行程序。利用大规模集群资源,解决传统单机无法解决的大数据处理问题,其设计思想起源于MapReduce Paper

MapReduce编程模型

MapReduce是一种用于处理和生成大型数据集的编程模型和相关实现,用户指定一个map()函数接收处理key/value对,同时产生另外一组临时key/value集合,reduce()函数合并相同intermediate key关联的value数据,以这种函数式方风格写的程序会自动并行化并在大型商品机器集群上运行。

Paper发布之前的几年,Jeffrey DeanGoogle的一些工程师已经实现了数百个用于处理大量原始数据且特殊用途的计算程序,数据源如抓取的文档、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));

ReadMore »