前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OceanBase初体验之部署生产标准的三节点分布式集群

OceanBase初体验之部署生产标准的三节点分布式集群

作者头像
HOHO
发布于 2024-03-15 00:31:53
发布于 2024-03-15 00:31:53
38200
代码可运行
举报
运行总次数:0
代码可运行

前置条件

OceanBase 数据库集群至少由三个节点组成,所以先准备好3台服务器

IP

配置

操作系统

x.x.x.150

Intel x86 12C 64G内存 1T SSD

CentOS 7.9

x.x.x.155

Intel x86 12C 64G内存 1T SSD

CentOS 7.9

x.x.x.222

Intel x86 12C 64G内存 1T SSD

CentOS 7.9

关于运行 OceanBase 集群对于硬件资源和系统软件的要求,大家可以参考官方建议: https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000508277

服务器特殊的配置项(每台都要设置):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ vi /etc/sysctl.conf
vm.swappiness = 0
vm.max_map_count = 655360
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0
fs.file-max = 6573688

$ sysctl -p    

$ echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled

$ systemctl disable firewalld 
$ systemctl stop firewalld

如果是使用的物理机部署,建议在BIOS中开启最大性能模式,X86芯片开启超线程。三台节点保证时间一致。

OceanBase 提供了多种部署方式,我们这里采用命令行部署,官方提供了集群管理工具OBD(俗称黑屏部署)。

下载安装包,直接上全家桶 All in One 的版本:https://www.oceanbase.com/softwarecenter

初始化中控机

在三台机器中任意挑选一台当做集群的中控机,通过OBD来操作整个集群,中控机只是用于管理集群,用单独的机器部署也可以。

把安装包上传到中控机,先把OBD装好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ tar -xzf oceanbase-all-in-one-*.tar.gz
[ob@localhost ~]$ cd oceanbase-all-in-one/bin/
[ob@localhost ~]$ ./install.sh
[ob@localhost ~]$ source ~/.oceanbase-all-in-one/bin/env.sh

到这里集群管理工具 obd 和客户端连接工具 obclient 就都装好了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ which obd
~/.oceanbase-all-in-one/obd/usr/bin/obd
[ob@localhost ~]$ which obclient
~/.oceanbase-all-in-one/obclient/u01/obclient/bin/obclient

编写集群部署配置

oceanbase-all-in-one/conf目录下放了很多配置文件示例,可根据实际部署需要来修改。我这里要部署一套标准的 OceanBase 分布式集群,包含的组件有:

  • observer - 数据库核心服务
  • obproxy - 数据库代理,对多节点做负载均衡
  • obagent - 监控采集服务
  • grafana - 监控显示服务
  • prometheus - 监控数据存储

配置文件内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Only need to configure when remote login is required
user:
  username: ob
  password: oceanbase
#   key_file: your ssh-key file path if need
#   port: your ssh port, default 22
#   timeout: ssh connection timeout (second), default 30
oceanbase-ce:
  servers:
    - name: server1
      # Please don't use hostname, only IP can be supported
      ip: x.x.x.222
    - name: server2
      ip: x.x.x.150
    - name: server3
      ip: x.x.x.155
  global:
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: eno1
    # if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.
    memory_limit: 32G # The maximum running memory for an observer
    # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
    system_memory: 8G
    datafile_size: 50G # Size of the data file.
    log_disk_size: 20G # The size of disk space used by the clog files.
    syslog_level: INFO # System log level. The default value is INFO.
    enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
    enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
    max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
    # observer cluster name, consistent with obproxy's cluster_name
    appname: obcluster
    production_mode: false
    # root_password: # root user password, can be empty
    # proxyro_password: # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
  # In this example , support multiple ob process in single node, so different process use different ports.
  # If deploy ob cluster in multiple nodes, the port and path setting can be same.
  server1:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/ob/deploy/observer
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone1
  server2:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/ob/deploy/observer
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone2
  server3:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/ob/deploy/observer
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone3
obproxy-ce:
  # Set dependent components for the component.
  # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  depends:
    - oceanbase-ce
  servers:
    - x.x.x.222
  global:
    listen_port: 2883 # External port. The default value is 2883.
    prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
    home_path: /home/ob/deploy/obproxy
    # oceanbase root server list
    # format: ip:mysql_port;ip:mysql_port. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # rs_list: 192.168.1.2:2881;192.168.1.3:2881;192.168.1.4:2881
    enable_cluster_checkout: false
    # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # cluster_name: obcluster
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # observer_sys_password: # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
obagent:
  depends:
    - oceanbase-ce
  servers:
    - name: server1
      # Please don't use hostname, only IP can be supported
      ip: x.x.x.222
    - name: server2
      ip: x.x.x.150
    - name: server3
      ip: x.x.x.155
  global:
    home_path: /home/ob/deploy/obagent
    ob_monitor_status: active
prometheus:
  depends:
    - obagent
  servers:
    - x.x.x.222
  global:
    home_path: /home/ob/deploy/prometheus
grafana:
  depends:
    - prometheus
  servers:
    - x.x.x.222
  global:
    home_path: /home/ob/deploy/grafana
    login_password: oceanbase

配置文件的整体格式是按组件来配置,三个节点定义成三个server,分布在三个zone,保存了三副本数据,参数定义参考注释即可。

这里要注意几个端口,observer 对外服务是用2881,对内节点间通信是用2882,obproxy是用2883。

部署集群

准备好配置文件后部署集群就两行命令的事,先执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ obd cluster deploy obtest -c topology.yaml

这一步会把各组件需要的文件通过shh传到各个节点上,同时创建目录、服务、给权限等等。

等最后输出下面这个信息就表示部署成功了。

接下来按提示启动集群即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ obd cluster start obtest
Get local repositories ok
Search plugins ok
Load cluster param plugin ok
Open ssh connection ok
Check before start observer ok
Check before start obproxy ok
Check before start obagent ok
Check before start prometheus ok
Check before start grafana ok
Start observer ok
observer program health check ok
Connect to observer x.x.x.222:2881 ok
Initialize oceanbase-ce ok
Start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Initialize obproxy-ce ok
Start obagent ok
obagent program health check ok
Connect to Obagent ok
Start promethues ok
prometheus program health check ok
Connect to Prometheus ok
Initialize prometheus ok
Start grafana ok
grafana program health check ok
Connect to grafana ok
Initialize grafana ok
Wait for observer init ok
+-----------------------------------------------+
|                    observer                   |
+-------------+---------+------+-------+--------+
| ip          | version | port | zone  | status |
+-------------+---------+------+-------+--------+
| x.x.x.150 | 4.2.2.0 | 2881 | zone2 | ACTIVE |
| x.x.x.155 | 4.2.2.0 | 2881 | zone3 | ACTIVE |
| x.x.x.222 | 4.2.2.0 | 2881 | zone1 | ACTIVE |
+-------------+---------+------+-------+--------+
obclient -hx.x.x.150 -P2881 -uroot -p'KHaaKw9dcLwXNvKrT3lc' -Doceanbase -A

+-----------------------------------------------+
|                    obproxy                    |
+-------------+------+-----------------+--------+
| ip          | port | prometheus_port | status |
+-------------+------+-----------------+--------+
| x.x.x.222 | 2883 | 2884            | active |
+-------------+------+-----------------+--------+
obclient -hx.x.x.222 -P2883 -uroot -p'KHaaKw9dcLwXNvKrT3lc' -Doceanbase -A

+----------------------------------------------------------------+
|                            obagent                             |
+-------------+--------------------+--------------------+--------+
| ip          | mgragent_http_port | monagent_http_port | status |
+-------------+--------------------+--------------------+--------+
| x.x.x.222 | 8089               | 8088               | active |
| x.x.x.150 | 8089               | 8088               | active |
| x.x.x.155 | 8089               | 8088               | active |
+-------------+--------------------+--------------------+--------+
+-------------------------------------------------------+
|                       prometheus                      |
+-------------------------+-------+------------+--------+
| url                     | user  | password   | status |
+-------------------------+-------+------------+--------+
| http://x.x.x.222:9090 | admin | qISoDdWHRX | active |
+-------------------------+-------+------------+--------+
+------------------------------------------------------------------+
|                             grafana                              |
+-------------------------------------+-------+-----------+--------+
| url                                 | user  | password  | status |
+-------------------------------------+-------+-----------+--------+
| http://x.x.x.222:3000/d/oceanbase | admin | oceanbase | active |
+-------------------------------------+-------+-----------+--------+
obtest running
Trace ID: 98204f6e-e1d5-11ee-b268-1c697a639d50
If you want to view detailed obd logs, please run: obd display-trace 98204f6e-e1d5-11ee-b268-1c697a639d50

还可以通过 list 和 display 命名查看集群状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ obd cluster list
[ob@localhost ~]$ obd cluster display obtest

操作集群

前面启动集群的时候已经打印出了连接集群的方式,这里连接入口有两种。

一种是直连任意一台 observer,另一种是走负载均衡代理连接 obproxy,两种方式注意区别 ip 和端口号。另外连接工具用 obclient 或者 mysql 都可以。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ obclient -hx.x.x.222 -P2883 -uroot -p'KHaaKw9dcLwXNvKrT3lc' -Doceanbase -A
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 5
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:20:54)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [oceanbase]>

先看一下3个节点的情况:

再看三副本的分布情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;
+-----------+-------------+-------------+--------------+---------------------------------------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE | LOCALITY                                    |
+-----------+-------------+-------------+--------------+---------------------------------------------+
|         1 | sys         | SYS         | RANDOM       | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
+-----------+-------------+-------------+--------------+---------------------------------------------+
1 row in set (0.012 sec)

LOCALITY字段记录了副本的分布,这里面FULL代表全量副本,可以支持读写和参与投票选举leader,后面是该副本分布在哪个zone。

尝试创建跨zone的资源池和租户,注意 UNIT_NUM 不能超过每个zone里的 observer 数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
obclient [oceanbase]> CREATE RESOURCE UNIT uc1 MAX_CPU 1, MEMORY_SIZE '2G', LOG_DISK_SIZE '2G';
Query OK, 0 rows affected (0.009 sec)

obclient [oceanbase]> CREATE RESOURCE POOL rp1 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('zone1', 'zone2', 'zone3');
Query OK, 0 rows affected (0.029 sec)

obclient [oceanbase]> CREATE TENANT tt resource_pool_list=('rp1')  set ob_tcp_invited_nodes = '%';
Query OK, 0 rows affected (51.995 sec)

登录到新租户里面做一些数据操作(新租户里的root用户默认是空密码):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ob@localhost ~]$ obclient -h10.3.72.222 -P2883 -uroot@tt  -Doceanbase -A
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 59
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:20:54)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [oceanbase]>
obclient [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oceanbase          |
| test               |
+--------------------+
4 rows in set (0.002 sec)

obclient [oceanbase]> create database tt_db1;
Query OK, 1 row affected (0.069 sec)

obclient [oceanbase]> use tt_db1;
Database changed
obclient [tt_db1]> create table t1(id int primary key,name varchar(50),dt datetime);
Query OK, 0 rows affected (0.234 sec)

obclient [tt_db1]> select * from t1;
Empty set (0.022 sec)

obclient [tt_db1]> insert into t1 values(1,'aaa',now());
Query OK, 1 row affected (0.004 sec)

obclient [tt_db1]> select * from t1;
+----+------+---------------------+
| id | name | dt                  |
+----+------+---------------------+
|  1 | aaa  | 2024-03-14 16:24:00 |
+----+------+---------------------+
1 row in set (0.001 sec)

下一篇尝试从 mysql 迁移数据到 OceanBase。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
揭秘 DeepMind 的关系推理网络
来源 | hackernoon 编译 | 孙薇 每当 DeepMind 发表一篇新文章时,媒体都会有狂热的报道,而你常常会在这些报道中读到一些充满误导性的词句。例如,有充满未来主义色彩的媒体是这样报道 DeepMind 关于关系推理网络的新论文的: DeepMind 研发了一种可以感知周围事物的神经网络。 这样的表达不仅是误导,也使得对于人工智能领域并不是那么熟悉的用户感受到威胁。在这篇文章中,笔者整理了 DeepMind 的新论文,尝试用简单的方式来解释这个新的架构。 你可以在这里(https://arx
用户1737318
2018/07/20
8360
学界 | 标题党太吓人?这篇文章会告诉你DeepMind关系推理网络的真实面貌
每当DeepMind发表一篇新论文时,媒体都会狂热的跟踪报道,而且会使用很多误导人的短语。比如关于该关系推理网络的报道: DeepMind开发了一种神经网络,能够感知其周围的物体。 实际上这种报导不仅仅是误导性的,而且使得很多不明真相的吃瓜群众感到恐慌:AI真的已经强到如此地步了吗?在这篇文章中,将介绍DeepMind论文:A simple neural network module for relational reasoning,试着通过最简单的方式介绍这个最新的架构。 什么是关系推理? 从最简单的角度
AI科技评论
2018/03/14
7100
学界 | 标题党太吓人?这篇文章会告诉你DeepMind关系推理网络的真实面貌
【ICML2016】谷歌 DeepMind 论文下辑
【新智元导读】深度学习重要会议 ICML2016 接收谷歌 DeepMind 9篇论文,新智元系统整理,继上篇之后,本次邀请国家千人计划专家、平安科技数据平台部总经理肖京进行点评:《用记忆增强的神经网络进行单点学习》提出了新的存储读写更新策略;《深度生成模型中的单点泛化》延续了去年 Science 那篇小数据学习文章(Lake et. al.)的工作,不过,小数据学习(one-short learning)尚处于初步阶段,本文提出的方法还有待提高。其他3篇,《蒙特卡洛目标变分推断》提出了首个为重要性采样设计
新智元
2018/03/22
8840
【ICML2016】谷歌 DeepMind 论文下辑
DeepMind早就不再下围棋了,新论文训练AI进行逻辑推理
大数据文摘作品,转载要求见文末 作者 | DANIEL OBERHAUS 编译 | 刘小楚、范玥灿、宁云州 如果我们要创造广义的人工智能,我们必须教会它和我们一样思考。 去年,人工智能AlphaGo首次在人机围棋大赛中战胜了人类世界冠军。鉴于围棋的巨大复杂性,这次胜利抓取了所有人的目光。虽然AlphaGo打败了多位世界级围棋棋手的胜利令人印象深刻,但这种人工智能仍然被认为是狭义的人工智能。也就是说,这种人工智能只能在有限的任务领域强于人类。 因此,即使AlphaGo在世上最复杂的棋牌游戏中完胜人类,我们也
大数据文摘
2018/05/25
3880
一文读懂 CNN、DNN、RNN 内部网络结构区别
【AI研习社】关注AI前沿、开发技巧及技术教程等方面的内容。欢迎技术开发类文章、视频教程等内容投稿,邮件发送至:zhangxian@leiphone.com 从广义上来说,NN(或是更美的DNN)确实可以认为包含了CNN、RNN这些具体的变种形式。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构,包括卷积层或是LSTM单元。但是如果说DNN特指全连接的神经元结构,并不包含卷积单元或是时间上的关联。因此,如果一定要将DNN、CNN、RNN等进行对比,也未尝不可。 其实,如果我们顺着神经网络技术
AI研习社
2018/03/29
1.6K0
一文读懂 CNN、DNN、RNN 内部网络结构区别
追根溯源!一图看尽深度学习架构谱系
机器之心整理 参与:蒋思源、李泽南、李亚洲 近几年,深度学习高速发展,出现了大量的新模型与架构,以至于我们无法理清网络类型之间的关系。在这篇文章中,中国香港科技大学(HKUST)助理教授金成勳总结了深度网络类型之间的谱系图,以便于我们索引不同类型网络的杰出研究成果。 金成勳在 GitHub 上梳理出的谱系图如下(点击图片放大查看),最后的蓝色字体部分是各分支内的杰出研究成果(附所有论文链接)。机器之心在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎
机器之心
2018/05/10
8460
IBM长文解读人工智能、机器学习和认知计算
人工智能的发展曾经经历过几次起起伏伏,近来在深度学习技术的推动下又迎来了一波新的前所未有的高潮。近日,IBM 官网发表了一篇概述文章,对人工智能技术的发展过程进行了简单梳理,同时还图文并茂地介绍了感知器、聚类算法、基于规则的系统、机器学习、深度学习、神经网络等技术的概念和原理。 人类对如何创造智能机器的思考从来没有中断过。期间,人工智能的发展起起伏伏,有成功,也有失败,以及其中暗藏的潜力。今天,有太多的新闻报道是关于机器学习算法的应用问题,从癌症检查预测到图像理解、自然语言处理,人工智能正在赋能并改变
钱塘数据
2018/03/06
9660
IBM长文解读人工智能、机器学习和认知计算
你不得不了解的8种神经网络结构!
机器学习已经在各个行业得到了大规模的广泛应用,并为提升业务流程的效率、提高生产率做出了极大的贡献。目前机器学习主要在以下方面应用: 模式识别:实际场景中的目标、包括人脸、表情、语音识别等等; 异常检测:例如信用卡交易的异常检测、传感器异常数据模式检测和异常行为检测等; 预测问题:预测股票或者汇率、或者预测消费者喜欢的电影、音乐等。 神经网络是一类机器学习算法和模型的统称,也是目前机器学习发展最快的一个领域。神经网络的架构主要分为三大类——前馈、循环和对称链接网络。神经网络具有如下三个特征使它成为了机器学习中
朱晓霞
2018/04/18
8100
你不得不了解的8种神经网络结构!
史上最全!27种神经网络简明图解:模型那么多,我该怎么选?
大数据文摘作品 编译:田奥leo、桑桑、璐、Aileen 27种?!神经网络竟有那么多种?这篇文章将逐一介绍下面这张图片中的27种神经网络类型,并尝试解释如何使用它们。准备好了吗?让我们开始吧! 神经网络的种类越来越多,可以说是在呈指数级地增长。我们需要一个一目了然的图表,在这些新出现的网络构架和方法之间进行导航。 幸运的是,来自Asimov研究所的Fjodor van Veen编写了一个关于神经网络的精彩图表(就是上面那张大图)。 下面,我们就来逐一看看图中的27种神经网络: Perceptron 感知
大数据文摘
2018/05/24
2.9K0
资源 | 初学者指南:神经网络在自然语言处理中的应用
选自machine learning mastery 机器之心编译 参与:刘晓坤、蒋思源 深度学习正在给自然语言处理带来巨大的变革。但是,作为一个初学者,要从哪里起步才好呢?深度学习和自然语言处理都是很宽泛的领域。哪些方面才是最重要的,还有,深度学习又是从哪个层面深刻影响了 NLP 呢? 看完这篇文章之后,你将会知道: 给自然语言处理领域带来最深刻影响的神经网络结构; 深度学习可以对自然语言处理的各个层面制定学习任务; 密集词汇表示的重要性和学习表示的方法。 让我们开始吧。 概览 这篇文章将分成 12
机器之心
2018/05/08
6370
资源 | 初学者指南:神经网络在自然语言处理中的应用
【干货】TensorFlow 实用技巧:模型盘点,使用情况及代码样例
本文将介绍当前 TensorFlow 上的所有抽象模型,描述每个模型的使用情况以及简单的代码样例。详细的示例请访问这里:https://github.com/c0cky/TensorFlow-in-a
新智元
2018/03/23
8840
一文看懂NLP神经网络发展历史中最重要的8个里程碑!
导读:这篇文章中作者尝试将 15 年的自然语言处理技术发展史浓缩为 8 个高度相关的里程碑事件,不过它有些偏向于选择与当前比较流行的神经网络技术相关的方向。我们需要关注的是,本文中介绍的许多神经网络模型都建立在同时代的非神经网络技术之上。在文章的最后,作者强调了这些有影响力的技术成果,它们为以后的 NLP 方法发展奠定了基础。
磐创AI
2019/07/23
4490
一文看懂NLP神经网络发展历史中最重要的8个里程碑!
深度学习架构谱系(完整图)
金成勳在 GitHub 上梳理出的谱系图如下(可点击图片放大查看),最后的蓝色字体部分是各分支内的杰出研究成果(附所有论文链接)。机器之心在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎大家留言补充。
机器人网
2018/07/23
4530
深度学习架构谱系(完整图)
长短时记忆网络学习笔记
aaa导语  一个机器学习算法包含两个主要部分  (1)模型从输入特征x预测输入y的函数f(x); (2)目标函数 目标函数取最小(最大)值时所对应的参数值,就是模型的参数的最优值。我们往往只能获得目标函数的局部最小(最大)值,因此也只能得到模型参数的局部最优值,而常见求最优解的算法是梯度下降/上升算法。 而神经网络算法是实现机器学习的其中一种方法,为了适应不同的输入特征应用场景,神经网络算法也有很多种变形,这里只是简单的介绍下长短时记忆网络,做个笔记。 背景 全连接神经网络和卷积神经网络的特点是只能单独的
MelonTeam
2018/01/15
1.8K3
长短时记忆网络学习笔记
【深度】一图看完深度学习架构谱系图
金成勳在 GitHub 上梳理出的谱系图如下,小编在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎大家留言补充。 Github 项目地址:https://
机器人网
2018/04/18
1.2K0
【深度】一图看完深度学习架构谱系图
深度学习架构的对比分析
深度学习的概念源于人工神经网络的研究,含有多个隐藏层的多层感知器是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示,以表征数据的类别或特征。它能够发现数据的分布式特征表示。深度学习是机器学习的一种,而机器学习是实现人工智能的必经之路。
半吊子全栈工匠
2023/09/02
8600
深度学习架构的对比分析
NLP入门:CNN,RNN应用文本分类,个性化搜索,苹果和乔布斯关系抽取(2)
前篇 一文了解自然语言处理的每个范畴用到的核心技术,难点和热点(1), 这部分涉及的NLP范畴包括: 中文分词 词性标注 句法分析 文本分类背景 下面介绍,文本分类常用的模型,信息检索,信息抽取。 8文本分类模型 近年来,文本分类模型研究层出不穷,特别是随着深度学习的发展,深度神经网络模型也在文本分类任务上取得了巨大进展。文本分类模型划分为以下三类: 基于规则的分类模型 基于规则的分类模型旨在建立一个规则集合来对数据类别进行判断。这些规则可以从训练样本里自动产生,也可以人工定义。给定一个测试样例,我们可以
double
2018/04/02
1.3K0
神经网络架构:最新进展和未来挑战
神经网络作为深度学习的核心组件,一直以来都在不断演化和发展。从最早的感知机到如今的复杂卷积神经网络和Transformer模型,神经网络架构的进展不仅在计算机视觉、自然语言处理等领域取得了显著成果,也在推动人工智能技术向前迈进。本文将探讨神经网络架构的最新进展、应用领域以及未来面临的挑战。
IT_陈寒
2023/12/13
9190
神经网络架构:最新进展和未来挑战
独家 | 一文读懂自然语言处理NLP(附学习资料)
前言 自然语言处理是文本挖掘的研究领域之一,是人工智能和语言学领域的分支学科。在此领域中探讨如何处理及运用自然语言。 对于自然语言处理的发展历程,可以从哲学中的经验主义和理性主义说起。基于统计的自然语言处理是哲学中的经验主义,基于规则的自然语言处理是哲学中的理性主义。在哲学领域中经验主义与理性主义的斗争一直是此消彼长,这种矛盾与斗争也反映在具体科学上,如自然语言处理。 早期的自然语言处理具有鲜明的经验主义色彩。如1913年马尔科夫提出马尔科夫随机过程与马尔科夫模型的基础就是“手工查频”,具体说就是
数据派THU
2018/01/30
3.5K0
独家 | 一文读懂自然语言处理NLP(附学习资料)
【GNN】一文读懂图卷积GCN
“ 本文的内容包括图卷积的基础知识以及相关辅助理解的知识点,相信同学们看完后一定能平滑上手理解GCN!”
zenRRan
2019/12/26
3.7K0
【GNN】一文读懂图卷积GCN
推荐阅读
相关推荐
揭秘 DeepMind 的关系推理网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档