E-MapReduce集群搭建HAWQ实践

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: HAWQ是一种基于HDFS的MPP(Massively Parallel Processing) SQL引擎,支持标准SQL/事务处理,性能比原生Hive快几百倍。本文介绍在E-MapReduce集群上面如何搭建HAWQ。

HAWQ是一种基于HDFS的MPP(Massively Parallel Processing) SQL引擎,支持标准SQL/事务处理,性能比原生Hive快几百倍。

 本文介绍在E-MapReduce集群上面如何搭建HAWQ。

零、 部署模式

HAWQ有多种部署模式

  • 非HA

    • standalone
    • yarn
  • HA

    • standalone
    • yarn

本文以HA-yarn模式为例,其它部署模式配置方面相对简单点,可以参考文档。

一、创建集群

在E-MapReduce产品页创建集群,本例使用HA集群。

5台机器:

    master:emr-header-1
    standby:emr-header-2
    slaves:
      emr-worker-1 
      emr-worker-2
      emr-worker-3

二、部署HAWQ

1. 添加gpadmin账号

在集群的所有机器上面操作:

  > sudo su hadoop
  > sudo useradd -G hadoop gpadmin
  > sudo passwd gpadmin  # 设置一个密码
  > sudo vi /etc/sudoers 
   末尾添加 gpadmin    ALL=(ALL)       NOPASSWD: ALL  并保存

2. 安装hawq

master节点

  • 安装hawq

       > sudo su root
       > wget http://emr-agent-pack.oss-cn-hangzhou.aliyuncs.com/hawq/hawq-2.0.0.0-22126.x86_64.rpm
       > rpm -ivh hawq-2.0.0.0-22126.x86_64.rpm 
  • 打通ssh

       > sudo su gpadmin
       > vi hosts ## 添加集群所有节点的IP
       > vi segment ## 添加所有slave节点的IP
       > vi masters ## 添加所有master/standby节点的IP
       > source /usr/local/hawq/greenplum_path.sh
       > hawq ssh-exkeys -f hosts  
  • 修改系统参数

    > hawq ssh -f hosts -e 'sudo sysctl -w kernel.sem=\"50100 128256000 50100 2560\"'
  • 安装其它节点HAWQ

      > hawq scp -f hosts  hawq-2.0.0.0-22126.x86_64.rpm =:~/
      > hawq ssh -f hosts -e "sudo rpm -ivh ~/hawq-*.rpm"
  • 创建HAWQ相关文件夹

     > hawq ssh -f masters -e 'sudo mkdir /mnt/disk{2..4}'
     > hawq ssh -f masters -e 'sudo chown hdfs:hadoop /mnt/disk{2..4}' 
     > hawq ssh -f masters -e 'sudo chmod 770 /mnt/disk{2..4}'
     > hawq ssh -f masters -e 'mkdir -p  /mnt/disk1/hawq/data/master'
     > hawq ssh -f segment -e 'mkdir -p  /mnt/disk1/hawq/data/segment'
     > hawq ssh -f hosts -e 'mkdir -p  /mnt/disk{1..4}/hawq/tmp'
  • 修改yarn为capacity-scheduler调度模式

        > vi /etc/emr/hadoop-conf/yarn-site.xml
    
       添加属性:
       <property>
          <name>yarn.resourcemanager.scheduler.class</name>       <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
       </property>
    
       将master的yarn-site.xml同步到其它所有节点
       重启集群yarn
  • 修改HAWQ配置

       > vi /usr/local/hawq/etc/hawq-site.xml
       修改如下属性
属性名 说明
hawq_master_address_host emr-header-1
hawq_standby_address_host emr-header-2
hawq_dfs_url emr-cluster/hawq_default
hawq_master_directory /mnt/disk1/hawq/data/master
hawq_segment_directory /mnt/disk1/hawq/data/segment
hawq_master_temp_directory /mnt/disk1/hawq/tmp,/mnt/disk2/hawq/tmp,/mnt/disk3/hawq/tmp,/mnt/disk4/hawq/tmp
hawq_segment_temp_directory /mnt/disk1/hawq/tmp,/mnt/disk2/hawq/tmp,/mnt/disk3/hawq/tmp,/mnt/disk4/hawq/tmp
hawq_global_rm_type yarn
hawq_rm_yarn_address emr-header-1:8032,emr-header-2:8032
hawq_rm_yarn_scheduler_address emr-header-1:8030,emr-header-2:8030
> vi /usr/local/hawq/etc/hdfs-client.xml
#打开HA的注释
属性名 说明
dfs.nameservices emr-cluster
dfs.ha.namenodes.emr-cluster nn1,nn2
dfs.namenode.rpc-address.emr-cluster.nn1 emr-header-1:8020
dfs.namenode.rpc-address.emr-cluster.nn2 emr-header-2:8020
dfs.namenode.http-address.emr-cluster.nn1 emr-header-1:50070
dfs.namenode.http-address.emr-cluster.nn2 emr-header-2:50070
 > vi /usr/local/hawq/etc/yarn-client.xml
#打开HA的注释
属性名 说明
yarn.resourcemanager.ha emr-header-1:8032,emr-header-2:8032
yarn.resourcemanager.scheduler.ha emr-heaer-1:8030,emr-header-2:8030
> vi  /usr/local/hawq/etc/slaves #添加segment节点IP

综上修改完master节点的HAWQ配置之后,需要同步到其它所有节点

> hawq scp -f hosts /usr/local/hawq/etc/yarn-client.xml /usr/local/hawq/etc/hdfs-client.xml /usr/local/hawq/etc/hawq-site.xml /usr/local/hawq/etc/slaves =:/usr/local/hawq/etc/

3.启动HAWQ集群

 > hawq init cluster

4. 验证

> psql -d postgres

postgres=# create database mytest;
CREATE DATABASE

postgres=# \c mytest
You are now connected to database "mytest" as user "gpadmin".

mytest=# create table t (i int);
CREATE TABLE

mytest=# insert into t select generate_series(1,100);
INSERT 0 100

mytest=# \timing
Timing is on.

mytest=# select count(*) from t;
 count
-------
   100
(1 row)

Time: 77.333 ms

mytest=# select * from t;

三、参考资料

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
7月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
100 3
|
2月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
48 1
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
52 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
96 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
43 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
56 0
|
3月前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
73 0
|
7月前
|
分布式计算 并行计算 Java
【分布式计算框架】 MapReduce编程初级实践
【分布式计算框架】 MapReduce编程初级实践
211 2
|
6月前
|
分布式计算 自然语言处理 大数据
【大数据】MapReduce JAVA API编程实践及适用场景介绍
【大数据】MapReduce JAVA API编程实践及适用场景介绍
166 0