HAWQ技术解析(五) —— 连接管理

article/2025/9/18 4:52:13

服务器启动后,还要经过一系列配置,才能被客户端程序所连接。本篇说明如何配置客户端身份认证,HAWQ的权限管理机制,HAWQ最常用的命令行客户端工具psql及与mysql命令行常用命令类比,最后还将列举一些客户端连接HAWQ数据库的常见问题排查。

一、配置客户端身份认证

上一篇曾经提到,HAWQ系统初始安装后,数据库包含一个预定义的超级用户。这个用户和安装HAWQ的操作系统用户用户具有相同的名字,叫做gpadmin。缺省时,系统只允许使用gpadmin用户从本地连接至数据库。为了允许任何其它用户从本地或远程主机连接数据库,需要配置HAWQ允许此类连接。

1. 配置允许连接至HAWQ

HAWQ脱胎于PostgreSQL,它的客户端访问与认证,是由标准的PostgreSQL基于主机的认证文件 — pg_hba.conf所控制。master和每个segment的数据目录下都存在一个pg_hba.conf文件。在HAWQ中,master实例的pg_hba.conf文件控制客户端对HAWQ系统的访问和认证。而segment的pg_hba.conf文件,作用只是允许每个segment作为master节点主机的客户端连接数据库,而segment本身并不接受其它客户端的连接。正因如此,不要修改segment实例的pg_hba.conf文件
pg_hba.conf的格式是普通文本,其中每行一条记录,表示一个认证条目,HAWQ忽略空行和任何#注释字符后面的文本。一行记录由四个或五个以空格或tab符分隔的字段。如果字段值中包含空格,则需要用双引号引起来,并且记录不能跨行。与MySQL类似,HAWQ也接受TCP连接和本地的UNIX套接字连接。每个TCP连接客户端的访问认证记录具有以下格式:
host|hostssl|hostnossl <database> <role> <CIDR-address>|<IP-address>,<IP-mask> <authentication-method>
本地UNIX域套接字的访问记录具有下面的格式:local <database> <role> <authentication-method>
表1描述了每个字段的含义

字段描述
local匹配使用UNIX域套接字的连接请求。如果没有此种类型的记录,则不允许UNIX域套接字连接。
host匹配使用TCP/IP的连接请求。除非在服务器启动时使用了适当的listen_addresses服务器配置参数(缺省值为“*”,允许所有IP连接),否则不能远程TCP/IP连接。
hostssl匹配使用TCP/IP的连接请求,但是仅当连接使用SSL加密时。服务器启动时必须通过设置ssl配置参数启用SSL。
hostnossl匹配不使用SSL的TCP/IP的连接请求。
<database>指定匹配此行记录的数据库名。值“all”指示匹配所有数据库。多个数据库名用逗号分隔。可以指定一个包含数据库名的文件,在文件名前加“@”。
<role>指定匹配此行记录的数据库角色名。值“all”指示匹配所有角色。如果指定的角色是一个组并且希望包含所有的组成员,在角色名前面加一个“+”。多个角色名可以通过逗号分隔。可以指定一个包含角色名的文件,在文件名前加“@”。
<CIDR-address>指定此行记录匹配的客户端主机的IP地址范围。它包含一个以标准点分十进制记法表示的IP地址,和一个CIDR掩码长度。IP地址只能用数字表示,不能是域或主机名。掩码长度标识客户端IP地址必须匹配的高位数。在IP地址、斜杠和CIDR掩码长度之间不能有空格。CIDR地址典型的例子有,单一主机如192.0.2.2/32,小型网络如192.0.2.0/24,大型网络如192.0.0.0/16。指定单一主机时,IPv4的CIDR掩码是32,Ipv6的是128。网络地址不要省略尾部的零。
<IP-address>,<IP-mask>这个字段是CIDR-address表示法的另一个替代表示方法。用不同列表示的掩码替换掩码长度。例如,255.255.255.255对应的CIDR掩码长度是32。此字段应用于host、hostssl和hostnossl记录。
<authentication-method>指定连接认证时使用的方法。HAWQ支持PostgreSQL 9.0所支持的认证方法(Trust、Password、GSSAPI、SSPI、Kerberos、Ident-based、LDAP、RADIUS、Certificate、PAM)。

(1)配置pg_hba.conf文件
这个例子显示如何编辑master的pg_hba.conf文件,以允许远程客户端使用加密口令认证,用所有角色访问所有数据库。注意:对于更高安全要求的系统,应考虑从master的pg_hba.conf文件中删除所有信任认证方式(Trust)的连接。信任方式意味着角色被授予访问权限而不需要任何认证,因此会绕过所有安全检查。
编辑pg_hba.conf

  1. 从hawq-site.xml文件的hawq_master_directory属性获得master数据目录的位置,并使用文本编辑器打开此目录下的pg_hba.conf文件。
  2. 在该文件中,为允许的每个连接增加一行。记录是顺序读取的,因此记录的顺序至关重要。例如图1:
    在这里插入图片描述
  3. 保存并关闭文件。
  4. 执行下面的命令重载pg_hba.conf文件的配置,使修改生效:hawq stop cluster -u -M fast
    (2)限制并发连接
    HAWQ的某些资源分配是以连接为基础的,因此推荐配置允许的最大连接数。为了限制HAWQ系统的并发会话数量,可以配置master的max_connections服务器配置参数,或者segment的seg_max_connections服务器配置参数。这些参数是本地参数,因此必须在所有HAWQ实例的hawq-site.xml文件中进行设置。
    如果设置了max_connections,必须也要设置其依赖参数max_prepared_transactions。该参数值必须大于等于max_connections的值,并且所有HAWQ实例要配置相同的值。下面是一个$GPHOME/etc/hawq-site.xml配置示例:
<property><name>max_connections</name><value>500</value>
</property>
<property><name>max_prepared_transactions</name><value>1000</value>
</property>
<property><name>seg_max_connections</name><value>3000</value>
</property>

增加这些值会引起HAWQ需要更多的共享内存。为了缓解内存使用压力,可以考虑降低其它内存相关的服务器配置参数,如gp_cached_segworkers_threshold等。不需要手工编辑每个节点的hawq-site.xml文件设置允许的连接数。可以使用Ambari或 命令行配置这些参数。使用Ambari:

  1. 通过HAWQ service Configs > Advanced > Custom hawq-site > Add Property … 配置max_connections、seg_max_connections和 max_prepared_transactions属性。
  2. 选择Service Actions > Restart All重载更新的配置。
    使用命令行:
  3. 作为管理员登录HAWQ的master节点并设置环境:source /usr/local/hawq/greenplum_path.sh
  4. 使用hawq config应用程序设置max_connections、seg_max_connections和max_prepared_transactions参数值,max_prepared_transactions的值必须大于等于max_connections。。例如:
$ hawq config -c max_connections -v 100
$ hawq config -c seg_max_connections -v 640
$ hawq config -c max_prepared_transactions -v 200
  1. 重启HAWQ集群重载新的配置值。$ hawq restart cluster
  2. 使用hawq config的-s选项显示服务器配置参数的值,确认配置生效:
$ hawq config -s max_connections
$ hawq config -s seg_max_connections

二、管理角色与权限

1. HAWQ角色与权限概述

pg_hba.conf文件限定了允许连接HAWQ的客户端主机、用户名、访问的数据库,认证方式等。用户名、口令,以及用户对数据库对象的使用权限保存在HAWQ的元数据表中(pg_authid、pg_roles、pg_class等)。HAWQ采用基于角色的访问控制机制,通过角色机制,简化了用户和权限的关联性。HAWQ系统中的权限分为两种:系统权限对象权限系统权限是指系统规定用户使用数据库的权限,如连接数据库、创建数据库、创建用户等对象权限是指在表、序列、函数等数据库对象上执行特殊动作的权限,其权限类型有select、insert、update、delete、references、trigger、create、connect、temporary、execute和usage等
与Oracle、SQLServer等数据库中角色的概念不同,这些系统中的所谓角色,是权限的组合和抽象,创建角色最主要的目的是简化对用户的授权。举一个简单的例子,假设需要给五个用户每个授予相同的五种权限,如果没有角色,需要授权二十五次,而如果把五种权限定义成一种角色,只需要先进行一次角色定义,再授权五次即可。然而HAWQ中的角色既可以代表一个数据库用户,又可以代表一组权限。而角色所拥有的预定义的系统权限是通过角色的属性实现的。角色可以是数据库对象 (例如表)的属主,也可以给其它角色赋予访问这些对象的权限。角色可以是其它角色的成员,因此一个成员角色可以从其父角色继承对象权限。
HAWQ系统可能包含多个数据库角色(用户或组)。这些角色并不是运行服务器上操作系统的用户和组。但是为方便起见,可能希望维护操作系统用户名和HAWQ角色名的关系,因为很多客户端应用程序,如psql,使用当前操作系统用户名作为缺省的角色,gpadmin就以最典型的例子。用户通过master实例连接HAWQ,mater 通过pg_hba.conf里的条目验证用户的角色和访问权限。之后master以当前登录的角色,从后台向segment实例发布SQL命令。系统级定义的角色对系统中所有数据库都是有效的。为了创建更多的角色,首先需要使用超级用户gpadmin连接HAWQ。

2. 角色和权限的安全最佳实践

保证gpadmin系统用户安全。HAWQ需要一个UNIX用户ID安装和初始化HAWQ系统。这个系统用户ID在HAWQ文档中被称为gpadmin。gpadmin用户是HAWQ中缺省的数据库超级用户,也是HAWQ安装及其底层数据文件的文件系统属主。这个缺省的管理员账号是HAWQ的基础设计。缺了这个用户系统无法运行。并且,没有方法能够限制gpadmin用户对数据库的访问。应该只使用gpadmin账号执行诸如扩容和升级之类的系统维护任务。任何以这个用户登录HAWQ主机的人,都可以读取、修改和删除任何数据,尤其是系统目录数据和数据库访问权力。因此,gpadmin用户的安全非常重要,仅应该提供给关键的系统管理员使用。应用的数据库用户应该永不作为gpadmin登录,ETL或者生产环境的应用程序也不应该以gpadmin用户连接数据库。赋予每个登录用户不同的角色。出于记录和审核目的,每个登录HAWQ的用户都应该被赋予自己的数据库角色。对于应用程序或者web服务,最好为每个应用或服务创建不同的角色。使用组管理访问权限。限制具有超级用户角色属性的用户。超级用户角色绕过HAWQ中所有的访问权限检查和资源队列,所以只应该将超级用户权限授予系统管理员。

3. 创建角色(用户)

此时的角色指的是一个可以登录到数据库,并开启一个数据库会话的用户。使用create role命令创建一个角色时,必须授予login系统属性(功能类似于Oracle的connect角色),使得该角色可以连接数据库。例如:create role jsmith with login;一个数据库角色有很多属性,用以定义该角色可以在数据库中执行的任务类型,或者具有的系统权限。表2描述了有效的角色属性。

属性描述
SUPERUSER/NOSUPERUSER确定一个角色是否是超级用户。只有超级用户才能创建新的超级用户。缺省值为NOSUPERUSER。
CREATEDB/NOCREATEDB确定角色是否被允许创建数据库。缺省值为NOCREATEDB。
CREATEROLE/NOCREATEROLE确定角色是否被允许创建和管理其它角色。缺省值为NOCREATEROLE。
INHERIT/NOINHERIT确定角色是否从其所在的组继承权限。具有INHERIT属性的角色可以自动使用所属组已经被授予的数据库权限,无论角色是组的直接成员还是间接成员。缺省值为INHERIT。
LOGIN/NOLOGIN确定角色是否可以登录。具有LOGIN属性的角色可以将角色作为用户登录。没有此属性的角色被用于管理数据库权限(即用户组)。缺省值为NOLOGIN。
CONNECTION LIMIT connlimit如果角色能够登录,此属性指定角色可以建立多少个并发连接。缺省值为-1,表示没有限制。
PASSWORD ’password’设置角色的口令。如果不准备使用口令认证,可以忽略此选项。如果没有指定口令,口令将被设置为null,此时该用户的口令认证总是失败。一个null口令也可以显示的写成PASSWORD NULL。
ENCRYPTED/UNENCRYPTED控制口令是否加密存储在系统目录中。行为由password_encryption配置参数所决定,缺省的设置是md5,如果要改为SHA-256加密,设置此参数为password。如果给出的口令字符串已经是加密格式,那么它被原样存储,而不管指定ENCRYPTED还是UNENCRYPTED(因为系统不能对加密的口令字符串进行解密)。这种设计允许在dump/restore时重新导入加密的口令。
VALID UNTIL ’timestamp’设置一个日期和时间,在该时间点后角色的口令失效。如果忽略此选项,口令将永久有效。
RESOURCE QUEUE queue_name赋予角色一个命名的资源队列用于负载管理。角色发出的任何语句都受到该资源队列的限制。注意,这个RESOURCE QUEUE属性不会被继承,必须在每个用户级(登录)角色设置。
DENY {deny_interval/deny_point}在此时间区间内禁止访问。指定天或者天和时间。

可以在创建角色时,或者创建角色后使用alter role命令指定这些属性。例如:

alter role jsmith with password 'passwd123';
alter role admin valid until 'infinity';
alter role jsmith login;
alter role jsmith resource queue adhoc;
alter role jsmith deny day 'sunday';

使用drop role或drop user命令删除角色(用户)。在删除角色前,先要收回角色所拥有的全部权限,或者先删除与角色相关联的所有对象,否则删除角色时会提示“cannot be dropped because some objects depend on it”错误。

4. 角色成员

通常将多个权限合成一组,能够简化对权限的管理。使用这种方法,对于一个组中的用户,其权限可以被整体授予和回收。在HAWQ中的实现方式为,创建一个表示组的角色,然后为用户角色授予组角色的成员。下面的SQL命令使用create role创建一个名为admin组角色,该组角色具有createrole和createdb系统权限。create role admin createrole createdb;
一旦组角色存在,就可以使用grant和revoke命令添加或删除组成员(用户角色)。例如:

grant admin to john, sally;
revoke admin from bob;

为了简化对象权限的管理,应当只为组级别的角色授予适当的权限。成员用户角色继承组角色的对象权限。例如:

grant all on table mytable to admin;
grant all on schema myschema to admin;
grant all on database mydb to admin;

角色属性LOGIN、SUPERUSER、CREATEDB和CREATEROLE不会当做普通的数据库对象权限被继承。为了让用户成员使用这些属性,必须执行SET ROLE指定一个具有这些属性的角色。在上面的例子中,我们已经为admin指定了CREATEDB和CREATEROLE属性。sally是admin的成员,当以sally连接到数据库后,执行以下命令,使sally可以拥有父角色的CREATEDB和CREATEROLE属性。
set role admin;
有关角色属性信息可以在系统表pg_authid中找到,pg_roles是基于系统表pg_authid的视图。系统表pa_auth_members存储了角色之间的成员关系。

5. 管理对象权限

    当一个对象(表、视图、序列、数据库、函数、语言、模式或表空间)被创建,它的权限被赋予属主。属主通常是执行create语句的角色。对于大多数类型的对象,其初始状态是只允许属主或超级用户在对象上做任何操作。为了允许其它角色使用对象,必须授予适当的权限。HAWQ对每种对象类型支持的权限如表3所示。
对象类型权限
Tables、Views、SequencesSELECT、INSERT、RULE、ALL
External TablesSELECT、RULE、ALL
DatabasesCONNECT、CREATE、TEMPORARY
FunctionsEXECUTE
Procedural LanguagesUSAGE
SchemasCREATE、USAGE、ALL
Custom ProtocolSELECT、INSERT、RULE、ALL

注意:必须为每个对象单独授权。例如,授予数据库上的ALL权限,并不会授予数据库中全部对象的访问权限,而只是授予了该数据库自身的数据库级别的全部权限(CONNECT、CREATE、TEMPORARY)。
使用grant SQL语句为一个角色授予一个对象权限。例如:grant insert on mytable to jsmith;
使用revoke命令回收权限。例如: revoke all privileges on mytable from jsmith;
也可以使用drop owned和reassign owned命令为一个角色删除或重新赋予对象属主权限。只有对象的属主或超级用户可以删除或重新赋予对象的属主权限。例如:

reassign owned by sally to bob;
drop owned by visitor;

HAWQ不支持行级和列级的访问控制,但是可以使用视图限制查询的行或列,模拟行级和列级访问控制。此时角色被授予对视图而不是基表的访问权限。对象权限,存储在pg_class.relacl中,更多对象权限的信息,可以参考”PostgreSQL 表和列权限(ACL)解读“

6. 口令加密

HAWQ缺省使用MD5为用户口令加密,通过适当配置服务器参数,也能实现口令的SHA-256加密存储。为了使用SHA-256加密,客户端认证方法必须设置为password而不是缺省的MD5。口令虽然以加密形式存储在系统表中,但仍然以明文在网络间传递。为了避免这种情况,应该建立客户端与服务器之间的SSL加密通道。

(1)系统级启用SHA-256加密

如果使用Ambari管理HAWQ集群:

  1. 通过HAWQ service Configs > Advanced > Custom hawq-site下拉列表设置password_hash_algorithm配置属性,有效值为SHA-256。
  2. 选择Service Actions > Restart All重载更新的配置。
    如果从命令行管理HAWQ集群:
  3. 作为管理员登录HAWQ master并设置路径:$ source /usr/local/hawq/greenplum_path.sh
  4. 使用hawq config应用程序设置password_hash_algorithm为SHA-256:$ hawq config -c password_hash_algorithm -v 'SHA-256'
  5. 重载HAWQ配置:$ hawq stop cluster -u
  6. 验证设置:$ hawq config -s password_hash_algorithm

(2)会话级启用SHA-256加密

为单个数据库会话设置password_hash_algorithm服务器参数:

  1. 以超级用户登录HAWQ实例。
  2. 设置password_hash_algorithm参数为SHA-256:set password_hash_algorithm = 'SHA-256';
  3. 验证参数设置:show password_hash_algorithm;

(3)验证口令加密方式生效

建立一个具有login权限的新角色,并设置口令:create role testdb with password 'testdb12345#' login;
修改客户端认证方法,允许存储SHA-256加密的口令,打开master的pg_hba.conf文件并添加下面一行:host all testdb 0.0.0.0/0 password
重启集群:hawq restart cluster
以刚创建的testdb用户登录数据库。psql -d postgres -h hdp3 -U testdb
在提示时输入正确的口令。
验证口令被以SHA-256哈希方式存储,哈希后的口令存储在pg_authid.rolpasswod字段中。

  1. 作为超级用户登录。
  2. 执行下面的查询:select rolpassword from pg_authid where rolname = 'testdb'; 查询结果如图2所示。
    在这里插入图片描述

三、使用psql连接HAWQ

用户可以使用与一个PostgreSQL兼容的客户端程序连接到HAWQ,最常用的客户端工具就是psql。再次强调,用户和管理员总是通过master连接到HAWQ,segment不能接受客户端连接。为了建立一个到master的连接,需要知道表4所示的连接信息,并在psql命令行给出相应参数或配置相关的环境变量。

连接参数描述环境变量
应用名连接数据库的应用名称。连接参数application_name中配置的缺省值是psql。$PGAPPNAME
数据库名连接的数据库名称。对于一个新初始化的系统,首次连接使用template1数据库。$PGDATABASE
主机名HAWQ master的主机名。缺省主机时localhost。$PGHOST
端口HAWQ master实例运行的端口号。缺省是5432。$PGPORT
用户名连接数据库的用户(角色)名称。与操作系统用户名相同的用户名不需要此参数。注意,每个HAWQ系统都有一个在初始化时自动创建的超级用户账号。这个账号与初始化HAWQ系统的操作系统用户同名(典型地是gpadmin)。$PGUSER

下面的例子显示如何通过psql访问一个数据库,没有指定的连接参数 依赖于设置的环境变量或使用缺省值。

psql -d mytest -h hdp3 -p 5432 -U `gpadmin`
psql mytest
psql

如果一个用户定义的数据库还没有创建,可以通过连接template1数据库访问系统。例如:psql template1
连接数据库后,psql提供一个由当前连接的数据库名后跟=>构成的提示符(超级用户是=#)。例如:mytest=>
在提示符下,可以键入SQL命令。一个SQL命令必须以;(分号)结束,以发送到诉服务器执行。例如:select * from mytable;
psql常用命令与mysql命令行的比较如表5所示。

功能描述psqlmysql
联机帮助help:简要帮助 ?:psql命令帮助 \h:SQL命令帮助help、?、?、\h:都是等价的简要帮助。后面可以跟SQL命令,显示详细的命令语法
执行SQL分号或\g分号、\g或\G
退出\q\q、exit或quit
列出所有数据库\lshow databases;
改变当前连接的数据库\c DBNAMEuse db_name;
列出内部表\dtshow tables;
列出外部表\dx
表的描述\d NAMEdesc tbl_name;
列出索引目前不支持索引show index from tbl_name;
列出视图\dvshow tables;
列出序列\ds
列出系统表\dtS+show tables from mysql; show tables from information_schema; show tables from performance_schema;

表5

四、用Kettle连接HAWQ

  1. 在pg_hba.conf文件中添加客户端连接 echo “host all kettle 192.168.8.187/32 md5” >> /data/hawq/master/pg_hba.conf
  2. 重载pg_hba.conf文件使修改生效hawq stop cluster -u -M fast
  3. 在psql中建立用户并授权
create role kettle with login;
alter role kettle with password '123456';
\t on
\o /tmp/grant.sql
select 'grant select on '||tablename || ' to kettle;' from pg_tables where schemaname='public';
\o
\i /tmp/grant.sql
  1. 在Kettle中建立DB连接
    (1)新建转换。
    (2)选中“主对象树” -> 转换 -> 转换1 -> DB连接,右键点击“新建”。
    (3)如图3配置数据库连接。
    在这里插入图片描述
    (4)点击“测试”,弹出图4所示的测试成功页面。
    在这里插入图片描述
    (5)新建一个“表输入”步骤,在编辑窗口中,“数据库连接”选择“hawq”,然后点击“获取查询SQL语句…”,在图5所示的弹出窗口中选择一个表并确定,结果如图6所示。
    在这里插入图片描述
    在这里插入图片描述
    (6)点击“预览”,结果如图7所示。
    在这里插入图片描述
    正确显示出查询的数据,连接成功。如果在HAWQ中授予kettle用户的insert权限,HAWQ也可作为表输出步骤的数据库连接,在Kettle中创建转换,从其它数据源向HAWQ导入数据。

五、连接常见问题

很多问题会引起客户端应用连接HAWQ失败。表6是HAWQ提供的造成连接问题的常见原因及其排查方法。

问题解决方案
No pg_hba.conf entry for host or user为了让HAWQ接受远程客户端连接,必须配置HAWQ的master实例上配置位于master实例数据目录下的pg_hba.conf文件,在该文件中增加适当的条目,允许客户端主机和数据库用户连接到HAWQ。
HAWQ is not running如果HAWQ master实例宕机,用户将不能连接。可以在HAWQ master上运行hawq state应用程序,验证HAWQ系统正在运行。
Network problem Interconnect timeouts当用户从远程客户端连接到HAWQ master时,网络问题可能阻止连接,例如,DNS主机名解析问题,主机系统断网等等。为了确认不是网络问题,从远程客户端所在主机连接HAWQ master所在主机。例如:ping hostname。如果系统不能解析HAWQ主机IP地址所涉及的主机名,查询和连接将失败。有些操作使用localhost进行连接,而另一些操作使用实际的主机名,所以两种情况都必须能正确解析。如果碰到连接错误,首先核实能够从HAWQ master所在主机连接到集群主机。在master和所有段的/etc/hosts文件中,确认有HAWQ集群中所有主机的正确的主机名和IP地址。127.0.0.1必须被解析成localhost。
Too many clients already缺省时,HAWQ master和segment允许的最大并发连接数分别是200和1280。超出此限制的连接将被拒绝。这个限制由master实例的max_connections参数和segment实例的seg_max_connections参数所控制。如果修改了master的设置,也必须在segment节点上做适当的修改。
Query failureHAWQ集群网络中必须配置DNS反向解析。如果DNS反向解析没有配置,失败的查询将在HAWQ master的日志文件中产生“Failed to reverse DNS lookup for ip <ip-address>”警告消息。

http://chatgpt.dhexx.cn/article/gyFxkmTe.shtml

相关文章

HAWQ-V3: Dyadic Neural Network Quantization论文学习

论文链接 https://arxiv.org/abs/2011.10680 摘要 目前的低精度量化算法往往具有从浮点值到量化整数值的来回转换的隐藏代价。这种隐藏的成本限制了通过量化神经网络所实现的延迟改进。为了解决这个问题&#xff0c;我们提出了HAWQ-V3&#xff0c;一个新的混合精度纯整数量化框…

HAWQ取代传统数仓实践(一)——为什么选择HAWQ

一、HAWQ取代传统数仓实践&#xff08;一&#xff09;——为什么选择HAWQ 为了跟上所谓“大数据”技术的脚步&#xff0c;从两年前开始着手实践各种SQL-on-Hadoop技术&#xff0c;从最初的Hive&#xff0c;到SparkSQL&#xff0c;再到Impala&#xff0c;进行了一系列ETL、CDC、…

在centos 7.3上进行Apache HAWQ集群安装部署

一、前期准备工作 1、准备三台物理机&#xff0c;master&#xff08;192.168.251.8&#xff09;,dataserver1&#xff08;192.168.251.9&#xff09;,dataserver2&#xff08;192.168.251.10&#xff09;&#xff1b; 2、目前最新版本是2.4.0&#xff0c; 官网下载地址&…

HAWQ

为了跟上所谓“大数据”技术的脚步&#xff0c;从两年前开始着手实践各种SQL-on-Hadoop技术&#xff0c;从最初的Hive&#xff0c;到SparkSQL&#xff0c;再到Impala&#xff0c;进行了一系列ETL、CDC、多维数据仓库、OLAP的实验。作为一名从业20年以上的DBA&#xff0c;从数据…

HAWQ技术解析(三) —— 基本架构

HAWQ是一个Hadoop原生的SQL查询引擎&#xff0c;它结合了MPP数据库的关键技术和Hadoop的可扩展性。HAWQ在原生的HDFS上读写数据&#xff0c;MPP架构使HAWQ表现出超越其它SQL on Hadoop解决方案的查询性能&#xff0c;Hadoop又为HAWQ提供了传统数据库所不具备的线性扩展能力。 一…

HAWQ技术解析(十三) —— 资源管理

一、HAWQ如何管理资源 HAWQ使用多种机制管理CPU、内存、I/O、文件句柄等系统资源&#xff0c;包括全局资源管理、资源队列、强制资源使用限额等。 1. 全局资源管理 Hadoop通常使用YARN全局管理资源。YARN是一个通用的资源管理框架&#xff0c;为MapReduce作业或其…

HAWQ个人学习笔记(一)——HAWQ介绍

一、什么是HAWQ&#xff1f; HAWQ是Hadoop原生SQL查询引擎&#xff0c;针对分析性的应用。它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能&#xff0c;结合了MMP数据库的关键技术优势和Hadoop的可扩展性和便利性。读写依赖于HDFS。 注&#xff1a;Hadoop…

全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例

光纤组网已是当今建筑智能化弱电行业里一种常见的组网方式&#xff0c;组建远距离无线、监控网络时&#xff0c;往往需要使用光纤进行连接通信&#xff0c;使用光纤收发器是经济适用型做法&#xff0c;尤其是在室外的使用。其实光纤收发器不仅可以成对使用&#xff0c;还可以配…

400G光模块的相关知识

现在的高速光模块市场慢慢从100G向400G转移&#xff0c;未来400G必定是主流的高速光模块&#xff0c;目前这个阶段占领主流的还是100G&#xff0c;之前100G的相关知识已经讲述过了&#xff0c;400G与100G的传输速率由各种因素导致&#xff0c;我们讲讲400G与100G的信号传输。 4…

QSFP28-100G-LR4光模块有什么特点及优势?

100G以太网的迅速发展给100G光模块带来了巨大的市场需求&#xff0c;在众多100G光模块中&#xff0c;QSFP28光模块以其较小的尺寸和低功耗的特点成为最受欢迎的光模块。下面易天光通信&#xff08;ETU-LINK&#xff09;将从定义&#xff0c;工作原理&#xff0c;应用场景和常见…

DWDM光模块和CWDM光模块的区别

DWDM光模块和CWDM光模块的区别 近年来波分复用(WDM)技术受到网络用户的热烈欢迎,这是一种在单根光纤上复用不同波长激光的多个光载波信号的技术。下文将由亿创飞宇光通信重点介绍CWDM SFP光模块和DWDM SFP光模块。 DWDM光模块是什么?DWDM光模块有哪些主要优势? DWDM光模…

SC接口光模块相关知识

什么是SC接口光模块&#xff1f; SC接口光模块即接口类型为SC的光模块&#xff0c;必须搭配SC接口的跳线才能正常使用。SC光模块的接口的紧固方式是采用插拔销闩式&#xff0c;不须旋转&#xff0c;使用很方便。 SC光模块的分类 SC光模块相比LC光模块和MPO光模块…

全面解析光模块的应用场景

光模块主要应用于数据通信领域&#xff0c;它的功能是实现光电信号的相互转化。因为大数据、区块链、云计算、物联网、人工智能、5G的兴起&#xff0c;使得数据流量迅猛增长&#xff0c;数据中心以及移动通信的光互连成为了光通信行业的研究热点。接下来&#xff0c;易天光通信…

单波100G光模块与4路100G光模块相比,优势有哪些?

目前市场上大多数的100G光模块都是采用4路25Gb/s并行或者波分复用进行传输的&#xff0c;比如100G SR4、100G PSM4、100G LR4、100G CWDM4光模块等&#xff0c;为了降低成本以及更好的传输效率&#xff0c;业界提出了100G single-lambda规范&#xff0c;这个规范是指使用PAM4光…

光模块-寿命分析

光模块结构分类基本指标光模块的使用寿命光模块的三种失效率预计方法基本概念失效率预计 可靠性分析可靠性试验加速寿命试验方法阿伦尼兹(Arrhenius)模型逆幂律模型单应力的艾林(Eyring)模型 光模块加速寿命试验分析方法研究 光模块 光模块是进行光电和电光转换的光电子器件。…

5G通信光模块是什么?5G通信光模块的发展方向如何?

随着移动通信行业的迅猛发展&#xff0c;目前5G已经成为全球关注的超级热门话题&#xff0c;与2G、3G、4G相比&#xff0c;未来光纤通信行业5G地位不容小觑&#xff0c;在5G网络时代&#xff0c;不管什么样的5G承载方案都离不开5G通信光模块&#xff0c;那么5G通信光模块是什么…

100G多模光模块介绍及应用

随着光通信市场对数据传输速率的要求越来越高&#xff0c;更高速率的光模块也随之诞生。与10G、40G的波分传输系统相比&#xff0c;100G光传输实现了偏振复用相位调制技术、数字相干接收技术第三代超强纠错编码技术等一系列重大改革&#xff0c;满足了用户与时俱进的需求。本期…

linux 光功率 模块_【光电通信】10G 光模块消光比补偿方法

今日光电 有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。欢迎来到今日光电! ----与智者为伍 为创新赋能---- 0. 引言 随着光纤到户、4G 业务的高速发展,光通信行业对高速光模块的需求也越来越大,这也对光模块厂商产能提出了新的挑…

精品文章!精讲光模块的方方面面,收藏!

光纤&#xff1a; 光纤作为光通信的传播媒介&#xff0c;分为多模光纤和单模光纤。 多模光纤&#xff08;橘红色&#xff09;的纤芯直径为 50um~62.5um&#xff0c;包层外直径 125um&#xff0c;适用于短距离传输&#xff08; 2KM-5KM)&#xff1b;单模光纤&#xff08;黄色&…

XFP与SFP+光模块的区别是什么?能相互连接吗?

在光纤网络中&#xff0c;10G光模块凭借着较低的成本和功耗被广泛应用于学校、公司等应用环境中。XFP和SFP是10G光模块常见的两种封装类型&#xff0c;下面易天光通信&#xff08;ETU-LINK&#xff09;就为大家介绍下XFP与SFP光模块的区别是什么&#xff1f;以及它们两者能相互…