ApacheHAWQ_SystemRequirements_01

按照以下指导原则配置好即将在每台机器上运行 Apache HAWQ 或 PXF 服务。

主机内存配置

为了防止 Apache HAWQ 集群中的数据丢失或损坏,您必须在每台主机上配置内存,
以便 Linux 内存不足(OOM)killer 进程不会由于 OOM 情况而终止 HAWQ 进程。
(HAWQ 应用自己的规则来强制执行内存限制。)

对于 HAWQ 的任务关键型部署,请在每台主机上执行以下步骤以配置内存:

  1. 设置操作系统 vm.overcommit_memory 内存参数设置为 2。
    通过此设置,OOM killer 进程将报告错误,而不是终止正在运行的进程。要设置此参数:
  2. 打开并编辑 /etc/sysctl.conf 文件
  3. 添加或更改参数定义,使文件包含以下行:
kernel.threads-max=798720
vm.overcommit_memory=2
  1. 保存并关闭文件,然后执行以下命令使参数生效
$ sysctl -p
  1. 执行下列命令,查看当前配置 vm.overcommit_memory:
$ sysctl -a | grep overcommit_memory
  1. 执行下列命令,查看运行时的配置 vm.overcommit_memory:
$ cat /proc/meminfo | grep Commit

2.设置 Linux swap 大小和 vm.overcommit_ratio 的值依据每台主机的可用内存情况来设定。
对于 2GB <= MEM < 8GB 的主机,设置 swap space = physical RAM 并设置 vm.overcommit_ratio=50.
对于 8GB <= MEM < 64GB 的主机,设置 swap space = physical RAM * 0.5,并设置 vm.overcommit_ratio=50
对于 64GB<= MEM 的主机 , 设置 swap space = 4GB 并设置 vm.overcommit_ratio=100
设置 vm.overcommit_ratio 参数:

  1. 打开文件 /etc/sysctl.conf 并编辑
  2. 新增或修改参数定义在文件中
vm.overcommit_ratio=50

3.保存和关闭文件,并执行下列命令使配置更改生效:

$ sysctl -p
  1. 查看当前系统中 vm.overcommit_ratio 的设置
$ sysctl -a | grep overcommit_ratio

你可以选择专有的交换分区,交换文件或者两种结合。
查看当前 swap 设置的命令:

$ cat /proc/meminfo | grep Swap
  1. 确保机器上运行的所有 Java 服务都使用-Xmx 开关只用于分配它们所需的 heap。
  2. 确保没有其他服务(如 Puppet)或自动进程尝试重置群集主机上的 overcommit_ratio 设置。
  3. 在安装过程中,通过设置 YARN 或 HAWQ 配置参数来配置 HAWQ 内存,详见[HAWQ 内存配置](# HAWQ 内存配置)。

HAWQ 内存配置

当你使用 YARN 或者 HAWQ 管理系统资源,前提你必须配置 MEM 用于 HAWQ。

当你根据[主机内存配置](# 主机内存配置)配置 vm.overcommit_ratio 和 swap space,每台 Linux 系统总的可用内存可以采用下列计算公式表示:

TOTAL_MEMORY = RAM * overcommit_ratio_percentage + SWAP

TOTAL_MEMORY 包括 HAWQ_MEMORYNON_HAWQ_MEMORY, 后者是组件使用的 MEM,例如:

  • Operating system

  • DataNode

  • NodeManager

  • PXF

  • All other software you run on the host machine.

要为确定的主机配置 HAWQ 内存,请首先确定机器上的 NON_HAWQ_MEMORY

然后根据您是使用 HAWQ 默认资源管理器还是 YARN 来管理资源,

在通过设置正确的参数来配置 HAWQ 内存:

  • 如果你使用 YARN 资源管理, set yarn.nodemanager.resource.memory-mb = MIN(TOTAL_MEMORY - NON_HAWQ_MEMORY , RAM).
  • 如果你使用 HAWQ 默认资源管理, set hawq_rm_memory_limit_perseg = RAM - NON_HAWQ_MEMORY.

您可以在配置 YARN 时使用 Ambari 设置参数,也可以在使用 Ambari 安装 HAWQ 时使用 Ambari 设置参数。

Example 1 - Large Host Machine

大型主机使用内存配置的示例:

RAM: 256GB

SWAP: 4GB

NON_HAWQ_MEMORY:

2GB for Operating System

2GB for DataNode

2GB for NodeManager

1GB for PXF

overcommit_ratio_percentage:1 (vm.overcommit_ratio = 100)

得出这台集群的 TOTAL_MEMORY = 256GB * 1 + 4GB = 260GB.

  • 如果此系统使用 YARN 进行资源管理,则 yarn.nodemanager.resource.memory-mb = TOTAL_MEMORY - NON_HAWQ_MEMORY = 260GB - 7GB = 253(因为 253GB 小于可用的 RAM 容量)。

  • 如果此系统使用默认的 HAWQ 资源管理器,则 hawq_rm_memory_limit_perseg = RAM - NON_HAWQ_MEMORY = 256 GB - 7GB = 249.

Example 2 - Medium Host Machine

示例中型主机使用内存配置:

RAM: 64GB

SWAP: 32GB

NON_HAWQ_MEMORY:

2GB for Operating System

2GB for DataNode

2GB for NodeManager

1GB for PXF

overcommit_ratio_percentage: 0.5 (vm.overcommit_ratio = 50)

得出这台集群的 TOTAL_MEMORY = 64GB * .5 + 32GB = 64GB.

  • 如果此系统使用 YARN 进行资源管理,则 yarn.nodemanager.resource.memory-mb = TOTAL_MEMORY - NON_HAWQ_MEMORY = 64GB - 7GB = 57 (
    因为 57GB 小于可用的 RAM 容量)。

  • 如果此系统使用默认的 HAWQ 资源管理器,则 hawq_rm_memory_limit_perseg = RAM - NON_HAWQ_MEMORY = 64 GB - 11GB = 57.

Example 3 - Small Host Machine (不建议用于生产)

示例小型机器使用内存配置:

RAM: 8GB

SWAP: 8GB

NON_HAWQ_MEMORY:

2GB for Operating System

2GB for DataNode

2GB for NodeManager

1GB for PXF

overcommit_ratio_percentage: 0.5 (vm.overcommit_ratio = 50)

得出这台集群的 TOTAL_MEMORY = 8GB * .5 + 8GB = 12GB.

  • 如果此系统使用 YARN 进行资源管理,则 yarn.nodemanager.resource.memory-mb = TOTAL_MEMORY - NON_HAWQ_MEMORY = 12GB - 7GB = 5 (
    因为 5GB 小于可用的 RAM 容量)。

  • 如果此系统使用默认的 HAWQ 资源管理器,则 hawq_rm_memory_limit_perseg = RAM - NON_HAWQ_MEMORY = 8 GB - 7GB = 1.

无密码 SSH 配置

HAWQ 主机将配置为在安装过程中使用无密码 SSH 进行集群内通信。

必须在每个 HAWQ 主机上启用基于密码的临时身份验证,以准备此配置。

  1. 如果尚未在 HAWQ 系统上配置,请安装 SSH 服务器:

    $ yum list installed | grep openssh-server
    $ yum -y install openssh-server
    
  2. 更新主机的 SSH 配置以允许基于密码的身份验证。编辑 SSH config 文件并将 PasswordAuthentication 配置值从 no 更改为 yes:

    $ sudo vi /etc/ssh/sshd_config
    
    PasswordAuthentication yes
    
  3. 重启 SSH:

    $ sudo service sshd restart
    

安装完成后,您可以选择关闭前面步骤中配置的基于密码的临时身份验证:

  1. 在文本编辑器中打开 SSH /etc/SSH/sshd_config 文件,并更新在上面步骤 2 中启用的配置选项:

    PasswordAuthentication no
    
  2. 重启 ssh:

    $ sudo service sshd restart
    

磁盘要求

  • 每个主机至少预留 2GB 用于 HAWQ 安装
  • 每个 segment 实例的元数据大约 300MB。
  • 对于 HAWQ master and segment 的临时目录,建议使用多个大磁盘(2TB 或更大)。
    对于给定的查询,HAWQ 将为每个 virtual segment 使用单独的 temp 目录(如果可用)来存储溢出文件。
    多个 HAWQ 会话还将在可用的情况下使用单独的 temp 目录,以避免磁盘争用。
    如果配置的临
    时目录太少,或者在同一磁盘上放置多个临时目录,则当多个 virtual segment 以同一磁盘为目标时,会增加磁盘争用或磁盘空间不足的风险。
    每个 HAWQ 段节点可以有 6 个 virtual segment。
  • 适当的数据可用空间:磁盘应至少有 30% 的可用空间(容量不超过 70%)。
  • 高速本地存储

网络要求

  • 阵列中的千兆以太网。对于生产集群,建议使用万兆以太网。
  • 专用非阻塞开关。
  • 具有多个 NIC 的系统需要 NIC 绑定以利用所有可用的网络带宽。
  • HAWQ master 和 segments 之间的通信需要在群集网络中配置反向 DNS 查找。

端口要求

在添加 HAWQ 和 PXF 服务之后,安装的各个 PXF 插件需要在主机上安装 Tomcat。
Tomcat 保留端口 8005、8080 和 8009。

如果您在将运行 PXF 插件的主机上配置了 Oozie JXM ,请确保报告服务使用的端口不是 8005。
这有助于防止在启动 PXF 服务时发生端口冲突错误。

Umask 要求

在所有群集主机上将操作系统文件系统的 umask 设置为 022。这样可以确保用户可以读取 HDFS 块文件。

评论
    test