大数据015——Elasticsearch基础

2023-05-16

1. Elasticsearch 简介

Elasticsearch是一个基于Lucene的实时的分布式搜索和分析 引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。

1.1 Lucene与ES关系

1)Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

2)Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。

1.2 Elasticsearch与solr对比

  • 当单纯的对已有数据进行搜索时,Solr更快。
  • 当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。
  • 随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。

1.4 Elasticsearch与关系型数据库对比

ElasticSearch与关系型数据库的相似:

database(数据库)index(索引库)
table(表)type(类型)
row(行)document(文档)
column(列)field(字段)
  1. 一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(表),类型中包含了很多文档(行),每个文档又包含了很多字段(列)。
  2. 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。
  3. 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。

2. Elasticsearch部署与启动

1)、自行从 elastic 的官网 elastic.co/downloads/elasticsearch 获取最新版本的 Elasticsearch。

2)、启动zookeeper集群 zkServer.sh start

3)、解压tar包,在根目录的bin目录下执行启动命令:

标准方式: ./elasticsearch 控制台占用命令行,Ctrl+C退出时程序终止;

规范方式: ./elasticsearch -d 控制台后台启动,不占用命令行;

通用的方式:./elasticsearch & 控制台占用命令行,Ctrl+C退出时程序依旧运行;

这里应该会报错,提示不能使用root用户启动该服务:

[root@node02 bin]# ./elasticsearch
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
	at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:94)
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:160)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)
	at org.elasticsearch.bootstrap.Elast

4)、然后你可以新建一个用户 es,并设置 elasticsearch 解压后的所有文件权限为777,在使用 su 命令切换用户:

useradd es
passwd es
chmod -R 777 elasticsearch
su es

再次启动:

[es@node01 bin]$ ./elasticsearch
...
[2019-01-25 22:00:25,182][WARN ][discovery                ] [node01] waited for 30s and no initial state was set by the discovery
[2019-01-25 22:00:25,192][INFO ][http                     ] [node01] publish_address {192.168.150.101:9200}, bound_addresses {192.168.150.101:9200}
[2019-01-25 22:00:25,192][INFO ][node                     ] [node01] started

5)、访问http://node01:9200,浏览器出现 Json 串:

// 20190126190803
// http://node01:9200/

{
  "name": "node01",
  "cluster_name": "myes",
  "cluster_uuid": "-tg11ItrTSC5TevAEznS2g",
  "version": {
    "number": "2.4.5",
    "build_hash": "c849dd13904f53e63e88efc33b2ceeda0b6a1276",
    "build_timestamp": "2017-04-24T16:18:17Z",
    "build_snapshot": false,
    "lucene_version": "5.5.4"
  },
  "tagline": "You Know, for Search"
}

3. REST 简介

REST 全称是 Resource Representational State Transfer,通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:

  • Resource:资源,即数据。比如 news,friends等;
  • Representational:某种表现形式,比如用JSON,XML,JPEG等;
  • State Transfer:状态变化。通过HTTP动词实现。

它一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

3.1 Rest操作

REST的操作分为以下几种:

– GET:获取对象的当前状态;

– PUT:改变对象的状态;

– POST:创建对象;

– DELETE:删除对象;

– HEAD:获取头信息。

3.2 ES内置的REST接口

/_aliases获取或者操作索引的别名
/index/_search搜索指定索引下的数据
/index/查看指定所引导详细信息
/index/type/创建或者操作 类型(表)
/index/_mapping创建或者操作 mapping
/index/_settings创建或者操作 设置(number_of_shards是不可更改的)
/index/_open打开指定被关闭的索引
/index/_close关闭指定索引
/index/_refresh刷新索引-不保证写入,使得新增内容对搜索可见
/index/_flush刷新索引-会出发lucene提交

4. CURL语句

4.1 索引库的创建与删除

创建索引库:

curl -XPUT http://node01:9200/mydoc/

PUT/POST都可以

删除索引库:

curl -XDELETE http://node01:9200/mydoc/

4.2 创建document

如在 mydoc 索引库下创建索引 employee ,并制定ID为1:

[root@node01 ~]# curl -XPOST http://node01:9200/mydoc/employee/1 -d '{ 
> "first_name" : "john", 
> "last_name" : "smith", 
> "age" : 25, 
> "about" : "I love to go rock climbing"
> }'
{"_index":"mydoc","_type":"employee","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
[root@node01 ~]# 

4.3 更新document

[root@node01 ~]# curl -XPUT http://node01:9200/mydoc/employee/1 -d '
> {
>  "first_name" : "god bin",
>  "last_name" : "pang",
>  "about" : "I love to go rock play",
>  "address": "shanghai"
> }'
{"_index":"mydoc","_type":"employee","_id":"1","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"created":false}
[root@node01 ~]# 

更新单条索引时可以新添加字段,原有字段的数据类型无法修改如:不能为’age’字段设置字符串值。

4.4 普通查询索引

1)、根据 id 查询(参数pretty表示es可以得到易于识别的json结果):

curl -XGET http://node01:9200/mydoc/employee/1?pretty:

[root@node01 ~]# curl -XGET http://node01:9200/mydoc/employee/1?pretty
{
  "_index" : "mydoc",
  "_type" : "employee",
  "_id" : "1",
  "_version" : 2,
  "found" : true,
  "_source" : {
    "first_name" : "god bin",
    "last_name" : "pang",
    "about" : "I love to go rock play",
    "address" : "shanghai"
  }
}

2)、curl后添加-i 参数,这样你就能得到反馈头文件

curl -i XGET http://node01:9200/mydoc/employee/1?pretty

3)、如果只需要source的数据 :

curl -XGET http://node01:9200/mydoc/employee/1?pretty_source?pretty

4)、检索文档中的一部分,如果只需要显示指定字段:

curl -XGET http://node01:9200/mydoc/employee/1?_source=name,age

5)、查询所有

curl -XGET http://node01:9200/mydoc/employee/1?pretty

6)、根据条件进行查询

curl -XGET http://node01:9200/mydoc/employee/_search?q=last_name:smith

4.5 DSL查询

DSL查询 Domain Specific Language ——领域特定语言 ,例如:

1)、匹配查询

curl -XGET http://node01:9200/mydoc/employee/_search?pretty -d '{
"query":
{"match":
    {"last_name":"smith"}
    }
}'

2)、对多个field发起查询:multi_match

curl -XGET http://node01:9200/mydoc/employee/_search?pretty -d '
{
 "query":
  {"multi_match":
   {
    "query":"bin",
    "fields":["last_name","first_name"]
   }
  }
}'

3)、复合查询,must,must_not, should

must: AND

must_not:NOT

should:OR

4)、范围查询

curl -XGET http://node01:9200/mydoc/employee/_search -d '
{
 "query":
  {"bool" :
   {
   "must" :
    {"term" : 
     { "first_name" : "bin" }
    }
   ,
   "must" : 
    {"range":
     {"age" : { "from" : 30, "to" : 40 }
    }
   }
   }
  }
}'

4.6 删除 document

curl -XDELETE http://node01:9200/shsxt/employee/1?pretty

  • 如果文档存在,es会返回200 ok的状态码,found属性值为 true,_version属性的值+1 ;
  • found属性值为false,但是_version属性的值依然会+1,这个就是内部管理的一部分,它保证了我们在多个节点间的不同操作的顺序都被正确标记了 ;
  • 注意:删除一个文档也不会立即生效,它只是被标记成已删除。 Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。

5. Elasticsearch 插件安装

5.1 head 插件

head 是在学习和使用Elasticsearch的过程中,必不可少需要通过可视化工具查看es的运行状态以及数据。

[root@node01 bin]# ./plugin install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...
Downloading ............................................................................................................................................DONE
Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /home/elasticsearch-2.4.5/plugins/head

安装后重新启动elasticsearch,访问http://node01:9200/_plugin/head:

000

5.2 Kibana & Marvel

Kibana 是一个基于浏览器页面的ES前端展示工具,是为ES提供日志分析的web接口,可用它对日志进行高效的搜索、可视化、分析等操作。Marvel插件可以帮助使用者监控elasticsearch的运行状态,不过这个插件需要license。

1)、自行下载 kibanna 安装包,解压安装,然后修改配置文件 config/kibana.yml 的 elasticsearch.url 属性为es集群中的一个节点即可;

2)、安装 Marvel:

Es_home/bin/plugin install license

[root@node01 bin]# ./plugin install license
-> Installing license...
Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/license/2.4.5/license-2.4.5.zip ...
ERROR: failed to download out of all possible locations..., use --verbose to get detailed information
[root@node01 bin]# ./plugin install license
-> Installing license...
Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/license/2.4.5/license-2.4.5.zip ...
Downloading .......................DONE
Verifying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/license/2.4.5/license-2.4.5.zip checksums if available ...
Downloading .DONE
Installed license into /home/elasticsearch-2.4.5/plugins/license

Es_home/bin/plugin install marvel-agent

[root@node01 bin]# ./plugin install marvel-agent
-> Installing marvel-agent...
Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/marvel-agent/2.4.5/marvel-agent-2.4.5.zip ...
Downloading .............................DONE
Verifying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/marvel-agent/2.4.5/marvel-agent-2.4.5.zip checksums if available ...
Downloading .DONE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission setFactory
* javax.net.ssl.SSLPermission setHostnameVerifier
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
Installed marvel-agent into /home/elasticsearch-2.4.5/plugins/marvel-agent

Kibana_home/bin/kibana plugin --install elasticsearch/marvel/latest

[root@node01 bin]# ./kibana plugin  --install elasticsearch/marvel/latest
Installing marvel
Attempting to transfer from https://download.elastic.co/elasticsearch/marvel/marvel-latest.tar.gz
Transferring 2400332 bytes....................
Transfer complete
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

3)、启动 kinaba、并重新启动 elasticsearch;

[root@node01 bin]# ./kibana 
  log   [10:24:22.261] [info][status][plugin:kibana@1.0.0] Status changed from uninitialized to green - Ready
  log   [10:24:22.289] [info][status][plugin:elasticsearch@1.0.0] Status changed from uninitialized to yellow - Waiting for Elasticsearch
......
  log   [10:24:31.482] [info][status][plugin:elasticsearch@1.0.0] Status changed from yellow to green - Kibana index ready

4)、浏览器访问 http://node01:5601/app/marvel

0001

5.3 分词器集成

5.1 下载

从地址 https://github.com/medcl/elasticsearch-analysis-ik 下载 elasticsearch 中文分词器;

5.2 安装插件

在安装好的elasticsearch中在plugins目录下新建ik目录,将此zip包拷贝到ik目录下,将权限修改为elasticsearch启动用户的权限,通过unzip命令解压缩:

[root@node01 plugins]# mkdir ik
[root@node01 plugins]# chmd -R 777 ik
[root@node01 plugins]# mv ../elasticsearch-analysis-ik-1.10.5.zip ik
# 未使用过 unzip 命令的需要安装unzip
[root@node01 plugins]# yum -y install unzip
[root@node01 plugins]# unzip elasticsearch-analysis-ik-1.10.5.zip

安装完成,需要为每台 es 节点完成相同操作;

5.3 重启 es 集群

5.4 分词器测试

1)、创建索引库

curl -XPUT http://node01:9200/ik

2)、设置 mapping

curl -XPOST http://node01:9200/ik/ikType/_mapping -d'{
 "properties": {
			 "content": {
				   "type": "string",
                   "index":"analyzed",
                   "analyzer": "ik_max_word",
                   "search_analyzer": "ik_max_word"
           }
      }
}'

3)、插入数据

curl -XPOST http://node01:9200/ik/ikType/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}'

curl -XPOST http://node01:9200/ik/ikType/2 -d'
{"content":"公安部:各地校车将享最高路权"}'

curl -XPOST http://node01:9200/ik/ikType/3 -d
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}'

curl -XPOST http://node01:9200/ik/ikType/4 -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}'

4)、查询

curl -XGET http://node01:9200/ik/ikType/_search?pretty  -d'{
   "query" : { "term" : { "content" : "中国" }}
 }'

返回结果:

{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 0.26516503,
        "hits": [
        {
            "_index": "ik",
            "_type": "ikType",
            "_id": "3",
            "_score": 0.26516503,
            "_source": {
            "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
        }
        }
        ,
        {
            "_index": "ik",
            "_type": "ikType",
            "_id": "4",
            "_score": 0.1875,
            "_source": {
            "content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
        }
        }
        ]
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据015——Elasticsearch基础 的相关文章

  • UnityEditor.BuildPlayerWindow+BuildMethodException

    unity3D安卓打包报错 xff1a UnityEditor BuildPlayerWindow 43 BuildMethodException 61 errors at UnityEditor BuildPlayerWindow 43
  • AI 入门怎么学?这份学习指南请收好!

    万事开头难 xff01 AI 入门对很多初学 AI 的同学来说是一大难题 搜集了一大堆入门资料 xff0c Python 数学 深度学习应有尽有 xff0c 但就是无从下手 xff0c 总是在第一章与放弃之间徘徊 那么 xff0c AI 应
  • 为什么越厉害的大厂,校招越不看重考试成绩?

    前几天赵同学告诉我 xff0c 他没有通过那家心仪的公司笔试 赵同学成绩不错 xff0c 每次都是专业前五 xff0c 但笔试中有一道 银行家算法实现 题 xff0c 他一点也没写出来 这就是大厂招聘不看重成绩单的原因 xff1a 招人是为
  • 我的2011——毕业之年的总结与彷徨

    题记 眼看2011即将成为过去 xff0c 难得在这最后的时刻 xff0c 抽点时间 xff0c 倒上一杯热茶 xff0c 回忆这一年的浮浮沉沉 这一年 xff0c 我和所有毕业生一样 xff0c 离开了呆了四年的大学校园 呆腻了校园的生活
  • centos安装anaconda教程

    1 更新yum 命令 xff1a sudo yum update 2 安装anaconda 2 1 查看anaconda对应python版本 我选的3 8版 Old package lists Anaconda documentation
  • Android布局 -- Navigation实现底部导航栏

    底部导航栏加页卡的切换 xff0c 很多App采用这种布局设计 xff0c 在以前的开发中 xff0c 需要自定义底部导航栏以及使用FragmentTransaction来管理Fragment的切换 xff0c 代码量较大 xff0c 而使
  • ViewModelProviders is deprecated

    原有的创建ViewModel的方法 xff1a viewModel 61 ViewModelProviders of this get ViewModel class 提示ViewModelProviders过时 改为 xff1a view
  • Android Fragment退出 返回上一个Fragment与直接退出

    例如应用底部有两个导航按钮A与B xff0c 刚进入的时候显示为第一个AFragment xff0c 点击B切换到BFragment 如果需求是在BFragment点击返回键回到AFragment xff0c 需要配置 app defaul
  • Android基础 -- 子线程可以修改UI吗?

    子线程可以修改UI吗 xff1f 为什么会产生这样的问题 xff0c 可能是因为在开发过程中遇到了 34 Only the original thread that created a view hierarchy can touch it
  • leetcode 417. 太平洋大西洋水流问题

    https leetcode cn com problems pacific atlantic water flow 思路是从海洋开始逆流 如果可以逆流到 就标记为1 然后检查两个海洋都可以逆流到的区域 DFS public List lt
  • Android模拟器检测常用方法

    在Android开发过程中 xff0c 防作弊一直是老生常谈的问题 xff0c 而模拟器的检测往往是防作弊中的重要一环 xff0c 接下来有关于模拟器的检测方法 xff0c 和大家进行一个简单的分享 1 传统的检测方法 传统的检测方法主要是
  • RecyclerView 隐藏部分分割线

    在项目中遇到复杂点的RecyclerView xff0c 可能会有隐藏部分分割线的需求 xff0c 例如item1和item3之间的分割线隐藏 xff0c item4和item5之间的分割线隐藏等 在看了文档里的ItemDecoration
  • 浅谈去中心化应用

    1 中心化应用 现在我们所使用的应用基本上都是中心化的应用 xff0c 什么是中心化应用呢 xff0c 举个栗子 xff0c 我们在天猫买东西的时候 xff0c 需要先付款给支付宝 xff0c 然后卖家发货 xff0c 我们确认收货之后 x
  • Java二分搜索树及其添加删除遍历

    对于树这种结构 xff0c 相信大家一定耳熟能详 xff0c 二叉树 二分搜索树 AVL树 红黑树 线段树 Trie等等 xff0c 但是对于树的应用以及编写一棵解决特定问题的树 xff0c 不少同学都会觉得不是一件简单的事情 xff0c
  • 游戏平台SDK设计和开发之旅——XSDK功能点梳理

    做游戏开发或者相关工作的同学 xff0c 可能都知道 xff0c 在游戏上线之前 xff0c 需要将游戏分发到各大渠道平台 xff0c 比如九游 xff0c 百度 xff0c 360 xff0c 华为等等 其中和技术相关的事情 xff0c
  • 谈谈 GitHub 开放私有仓库一事的影响

    GitHub 此次宣布免费开放私有仓库 xff0c 在我看来有以下几点影响 xff1a 缓和与同类产品间的竞争压力小部分个人项目由开源转闭源微软在技术社区中的企业形象进一步强化为未来的企业服务预热 下面根据以上几点 xff0c 我来简单谈下
  • 每天坚持刷 LeetCode 的人,究竟会变得有多强... 学习技巧都藏在这几个公众号里面了......

    信息爆炸时代 xff0c 与其每天被各种看过就忘的内容占据时间 xff0c 不如看点真正对你有价值的信息 xff0c 下面小编为你推荐几个高价值的公众号 xff0c 它们提供的信息能真正提高你生活的质量 人工智能爱好者社区 专注人工智能 机
  • 超酷炫!智能无人机中文教程重磅上线!

    前 言 对于大多数无人机爱好者来说 xff0c 能自己从头开始组装一台无人机 xff0c 之后加入 AI 算法 xff0c 能够航拍 xff0c 可以目标跟踪 xff0c 是心中的梦想 并且 xff0c 亲自从零开始完成复杂系统 xff0c
  • B 站硬件大佬又在 GitHub 上开源了一款神器...

    公众号关注 GitHubDaily 设为 星标 xff0c 每天带你逛 GitHub xff01 转自量子位 这次 xff0c 野生钢铁侠稚晖君带着他的硬核项目又来了 上次自制纯手工打造 AI 小电视 xff0c 播放量就超过 300 万
  • 用 C 语言来刷 LeetCode,网友直呼:那是真的牛批...

    公众号关注 GitHubDaily 设为 星标 xff0c 每天带你逛 GitHub xff01 大家好 xff0c 我是小 G 如果你是计算机科班出身 xff0c 那么 C 语言 xff0c 估计是你在初入编程时 xff0c 最早接触的编

随机推荐

  • 【pytorch torchvision源码解读系列—3】Inception V3

    框架中有一个非常重要且好用的包 xff1a torchvision xff0c 顾名思义这个包主要是关于计算机视觉cv的 这个包主要由3个子包组成 xff0c 分别是 xff1a torchvision datasets torchvisi
  • 【pytorch torchvision源码解读系列—5】DenseNet

    pytorch框架中有一个非常重要且好用的包 xff1a torchvision xff0c 顾名思义这个包主要是关于计算机视觉cv的 这个包主要由3个子包组成 xff0c 分别是 xff1a torchvision datasets to
  • Eclipse使用JDBC方式连接SQLServer2016

    Eclipse使用JDBC方式连接SQLServer2016 今天下午在查找很多JDBC连接SQL时发现大多数都是2012甚至更久以前的版本 xff0c 所以就此把步骤记录下来 xff0c 以免自己下次使用又忘记了 在连接的时候 xff0c
  • 魔改《自动化学报》Latex模板

    想用latex写一个中文文档 xff0c 看上了 自动化学报 的模板 xff0c 感觉不错 xff0c 下载下来在本地的tex live上编译 xff0c 报了一大串错 xff1b 上传到overleaf xff0c 还是报错 xff1b
  • TX2安装jetpack

    目前官网支持的下载为JetPack L4T 3 2 1 linux x64 b23和JetPack L4T 3 3 linux x64 b39 首先使用具有Ubuntu16 04的host主机 xff08 我使用的是个人笔记本 xff0c
  • TF-IDF算法

    TF IDF算法 TF IDF term frequency inverse document frequency 是一种用于信息检索与数据挖掘的常用加权技术 xff0c 常用于挖掘文章中的关键词 xff0c 而且算法简单高效 xff0c
  • 大数据009——MapReduce

    分布式离线计算框架MapReduce MapReduce是一种编程模型 Hadoop MapReduce采用Master slave 结构 只要按照其编程规范 xff0c 只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序
  • MapReduce实例——wordcount(单词统计)

    1 MR实例开发整体流程 最简单的MapReduce应用程序至少包含 3 个部分 xff1a 一个 Map 函数 一个 Reduce 函数和一个 main 函数 在运行一个mapreduce计算任务时候 xff0c 任务过程被分为两个阶段
  • MapReduce实例——好友推荐

    1 实例介绍 好友推荐算法在实际的社交环境中应用较多 xff0c 比如qq软件中的 你可能认识的好友 或者是Facebook中的好友推介 好友推荐功能简单的说是这样一个需求 xff0c 预测某两个人是否认识 xff0c 并推荐为好友 xff
  • Hadoop源码分析——JobClient

    1 MapReduce作业处理过程概述 当用户使用Hadoop的Mapreduce计算模型来进行处理问题时 xff0c 用户只需要定义所需的Mapper和Reduce处理函数 xff0c 还有可能包括的Combiner Comparator
  • 大数据010——Hive

    1 Hive 概述 Hive 是建立在 Hadoop 上的数据仓库基础构架 它提供了一系列的工具 xff0c 可以用来进行数据提取转化加载 xff08 ETL xff09 xff0c 这是一种可以存储 查询和分析存储在 Hadoop 中的大
  • 大数据011——Sqoop

    1 Sqoop 概述 Sqoop是Hadoop和关系数据库服务器之间传送数据的一种工具 它是用来从关系数据库如 xff1a MySQL xff0c Oracle到Hadoop的HDFS xff0c 并从Hadoop的文件系统导出数据到关系数
  • 大数据012——HBase

    1 HBase 简介 HBase Hadoop Database xff0c 是一个高可靠性 高性能 面向列 可伸缩 实时读写的分布式数据库 xff1b 在Hadoop生态圈中 xff0c 它是其中一部分且利用Hadoop HDFS作为其文
  • Hadoop源码分析——MapReduce输入和输出

    Hadoop中的MapReduce库支持集中不同的格式的输入数据 例如 xff0c 文本模式的输入数据的每一行被视为一个key value键值对 key是文件的偏移量 xff0c value是那一行的内容 另一种常见的格式是以key进行排序
  • 大数据013——Flume

    1 Flume 简介 Flume是由Cloudera软件公司提供的一个高可用的 xff0c 高可靠的 xff0c 分布式的海量日志采集 聚合和传输的系统 xff0c 后与2009年被捐赠了apache软件基金会 xff0c 为hadoop相
  • Hadoop源码分析——计算模型MapReduce

    MapReduce 是一个计算模型 xff0c 也是一个处理和生成超大数据集的算法模型的相关实现 用户首先创建一个Map函数处理一个基于key value pair的数据集合 xff0c 输出中间的基于 key value pair 的数据
  • 从SDLC到DevSecOps的转变

    OSSTMM 根据开源安全测试方法手册OSSTMM Open Source Security Testing Methodology Manual 的表述 安全测试包括但不限于以下几种做法 漏洞扫描 安全扫描 渗透测试 风险评估 安全审核
  • 大数据014——Storm 简介及入门案例

    分布式实时数据处理框架 Storm 1 Storm简介与核心概念 1 1 Storm 简介 全称为 Apache Storm xff0c 是一个分布式实时大数据处理系统 它是一个流数据框架 xff0c 具有最高的获取率 它比较简单 xff0
  • Hive与HBase整合详解

    参考之前小节的大数据010 Hive与大数据012 HBase成功搭建Hive和HBase的环境 xff0c 并进行了相应的测试 xff0c 并且在大数据011 Sqoop中实现Hive HBase与MySQL之间的相互转换 xff1b 本
  • 大数据015——Elasticsearch基础

    1 Elasticsearch 简介 Elasticsearch是一个基于Lucene的实时的分布式搜索和分析 引擎 设计用于云计算中 xff0c 能够达到实时搜索 xff0c 稳定 xff0c 可靠 xff0c 快速 xff0c 安装使用