CDH集群部署最佳实践

  • 时间:
  • 浏览:2

创建MySQL数据目录(非默认盘):

hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows=200000 --presplit=200 sequentialWrite 10

19/04/11 09:08:19 INFO hbase.PerformanceEvaluation: [SequentialWriteTest] Min: 14083ms Max: 14549ms Avg: 14270ms

附:NTP内网服务器搭建

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

sudo -u hdfs hbase pe sequentialWrite 1

sudo -u hdfs hbase pe sequentialRead 1

sudo -u hdfs hbase pe randomWrite 1

sudo -u hdfs hbase pe randomRead 1

fi

本次过程不启用auto-ssl。

hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows=200000 --presplit=200 randomWrite 10

19/04/11 09:09:59 INFO hbase.PerformanceEvaluation: [RandomWriteTest] Min: 20766ms Max: 21968ms Avg: 21383ms

前要有root权限的用户(root否则sudo权限)设置免密登录。

以下操作均为Centos7.5操作系统上进行。

专用型集群根据业务与应用场景前要划分如下:

在超过200个节点的集群中,何必 将所有服务的数据库装进去另一另3个节点中,否则该节点的数据库压力会很大。最好能为每个服务配置不同发生不同节点上的数据库。

Centos7自带python2.7,Centos6自带python2.6前要升级。

fdisk -l

专用型集群指根据不同的需求与功能职责对集群进行划分,由多个职责不同、硬件隔离的集群组成集群组环境提供服务。

blkid /dev/sdb | awk -F '"' '{printf "UUID=%s /opt %s defaults 0 2n",$2,$4}' >> /etc/fstab

cat /etc/fstab | grep opt

hue_safety_value.ini

[impala]

server_host=

server_port=

fi

从 这里 下载rpm离线安装包,所需文件及软件列表如下(以6.1版本为例):

在大型集群中Activity Monitor 与 Service Monitor 使用的数据库应该分配不同的磁盘卷来进行读写。

查看selinux情况表:

前要开放的端口可参考 官网说明,否则不还可以 确保开放所有所需端口,则前要关闭防火墙。

第三帕累托图将详细描述集群手动安装过程,与自动安装达成的效果一致,如已通过自动脚本完成CM服务安装可直接前往第四帕累托图CDH部署。

下载mysql安装包。

mapreduce.map.output.compresstruemapred.map.output.compress.codecorg.apache.hadoop.io.compress.SnappyCodec

yarn application -kill $1

下载地址:Scala

ansible all -a "yum -y remove cloudera-manager-*"

ansible all -a "umount /var/run/cloudera-scm-agent/process"

ansible all -m shell -a "yum localinstall cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm"

HBase提供实时读写服务的生产环境下建议将HBase集群独立部署为数据服务集群,参考:HBase最佳实践 - 「集群部署」小节。

if [ $# -lt 1 ]

then

spark.driver.extraJavaOptions=-Dfile.encoding=UTF-8

spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8

spark.hadoop.mapred.output.compress=true

spark.hadoop.mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec

spark.hadoop.mapred.output.compression.type=BLOCK

等等。

fi

todo:

关闭防火墙:

局域网内部管理安全情况表下最好关闭防火墙,否则CM管理组件和CDH组件有少量的端口进行通讯,前要配置好多好多 防火墙策略。

否则集群节点超过2000个,将mysql的max_allowed_packet值设置为16M。

使用自动化脚本工具进行安装操作:

配置内网NTP-Server(管理节点)。

Zookeeper尽量使用3个节点,且条件允许下最好在不同的物理主机上

指由另一另3个统一的大集群提供所有大数据服务,所有组件集中安装进去同另一另3个集群中,有部署简单、运维方便、易于使用等优点。

查看IPv6启用情况表前要通过以下几种土土妙招:

cd /opt/cloudera/parcel-repo && sha1sum CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel | awk '{ print $1 }' > CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha

服务器硬件情况表如下:

安装操作系统时取舍了中文语言,使用时发现帕累托图中文会有乱码的情况表,出理 方案如下:

操作系统安装初始,否则无法ping通内部管理服务,则检查 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,确认 ONBOOT 的值否则为no前要修改为yes(Centos7.5虚拟机安装初始默认为no),否则网络无法连通。

fi

集群主节点与子节点独立部署(HDFS/HBase/Yarn),且个人所有所有子节点部署在相同主机上

本位示例主机列表:

fuser -mv /mnt/

子集群各司其职,根据自身业务最大化利用硬件资源,互相独立互不影响。部署较为繁杂,运维难度增加。

pyspark \

--master yarn \

--queue root.moxing \

--driver-memory 1G \

--executor-memory 4G \

--executor-cores 1 \

--num-executors 10 \

--conf spark.dynamicAllocation.enabled=false

安装python所需依赖包:

spark-shell \

--master yarn \

--deploy-mode client \

--queue root.moxing \

--driver-memory 1G \

--executor-memory 5G \

--num-executors 10 \

--executor-cores 1 \

--conf spark.port.maxRetries=2000 \

--conf spark.yarn.executor.memoryOverhead=5120 \

--conf spark.dynamicAllocation.enabled=false \

--conf spark.hbase.host=cdh2-1,cdh2-2,cdh2-3,cdh2-4,cdh2-5 \

--conf spark.hbase.config=/etc/hbase/conf/hbase-site.xml \

--conf spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/* \

--conf spark.driver.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/*

mkfs.xfs /dev/sdb

mount /dev/sdb /opt

umount /dev/sdb

JDK下载地址:Cloudera Archive CM, 根据对应的cm版本取舍下载。

随机写

host示例配置如下:

firewall

混合随机读写

安装ansible批量管理主机:

安装mysql驱动

ntp.conf配置文件内容如下:

ansible使用配置参考 Ansible官网。

硬件取舍

umount /dev/sdb1

fdisk -l

mkdir /mnt/ukey

if [ $# -lt 1 ]

then

cat /etc/cloudera-scm-server/db.properties

Scala安装

随机读

性能需求

yarn.nodemanager.resource.memory-mb:每台主机前要够被Yarn使用的内存大小

yarn.app.mapreduce.am.resource.cpu-vcores:每台主机前要够被Yarn使用的CPU核心数

yarn.scheduler.minimum-allocation-mb:Container最小申请的内存大小

yarn.scheduler.maximum-allocation-mb:Container最大可申请的内存大小

mapreduce.output.fileoutputformat.compress=已启用

mapreduce.output.fileoutputformat.compress.type=BLOCK

mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec

mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec

mapreduce.map.output.compress=已启用

zlib.compress.level=DEFAULT_COMPRESSION

卸载已有mariadb数据库。

drop database scm;

drop database amon;

drop database rman;

drop database hue;

drop database metastore;

drop database sentry;

drop database nav;

drop database navms;

drop database oozie;

hadoop.http.staticuser.useryarn

未来数据量预估

安装后续前要用到的系统软件,以备日后服务器无外网无法下载的情况表。

不前要使用专门的数据库服务器,否则每个服务的数据库应该分散在不同的节点上。

hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows=200000 sequentialRead 10

19/04/11 09:12:07 INFO hbase.PerformanceEvaluation: [SequentialReadTest] Min: 200383ms Max: 52429ms Avg: 51691ms

备份文件logfile文件

注意事项:

进入mysql并创建数据库:

使用iperf测试主机之间的网络传输速率。

beeline --hiveconf mapreduce.job.queuename=xy_yarn_pool.production -u 'jdbc:hive2://172.20.15.12:20000/xy_app_hive' -n xy_app_hive -p dj@hy#fdabc9 -f $1 --hivevar fo_tab=credit_mining.fo_payment_encrypt --hivevar fi_tab=credit_mining.fi_gw_express_order_idcard1_encrypt --hivevar yanka_tab=xy_ods.t_serve_business_order_real_time_encrypt --hivevar laundering_4_1_tab=xy_app_hive.member_user_newest_status_d_incr --hivevar laundering_4_2_tab=xy_app_spark.prd_member_lending_data_4_d_incr_v2 --hivevar laundering_5_1_tab=xy_app_hive.member_user_newest_status_5_d_incr --hivevar laundering_5_2_tab=xy_app_spark.prd_member_lending_data_5_d_incr_v2

Centos7.5默认开启IPv6,CM组件明确说明不支持系统的IPv6功能,IPv6开启情况表下否则会再次突然出现不可预料的错误,前要提前关闭。

前要从以下十几个 维度进行评估:

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -D test.build.data=/tmp/benchmark -write -nrFiles 2000 -fileSize 200

否则否则混合型集群集群承载了所有功能,职能繁多,网络传输速率、磁盘IO等为集群共享,会因大型离线任务占用少量网络或磁盘IO峰值,对线上业务会造成短暂延迟。

mkdir -p /opt/cloudera/parcel-repo

mv /tmp/cm/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel /opt/cloudera/parcel-repo

mv /tmp/cm/manifest.json /opt/cloudera/parcel-repo

if [ $# -lt 7 ]

then

你否则对集群的架构模式、应用方向与业务场景了然于胸,并确保什儿 集群(否则是集群组)不必还可以 提供稳定、高效、高性能的服务,为业务保驾护航。

修改pip源

顺序读

spark-submit \

--conf spark.dynamicAllocation.enabled=false \

--name $name \

--master yarn \

--deploy-mode $deploy \

--queue root.prd \

--driver-memory $memDriv \

--num-executors $numExec \

--executor-memory $memExec \

--executor-cores $coreExec \

--class $class \

--jars /home/dw_prd/jars/mysql-connector-java-5.1.35.jar \

--conf spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/* \

--conf spark.driver.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/* $jar $params

硬件规划决定集群将使用十几个 硬件资源,以及那些配置的硬件资源。

设置集群机器主机名,并加入个人所有所有hosts文件中:

听候cloudera-scm-server系统进程池池起来后,在浏览器输入 ip:71200 进入CM管理界面部署CDH组件。

工作负载

否则你正准备从0刚开使搭建一套CDH集群应用于生产环境,那么此时前要做的事情应该是 结合当前的数据、业务、硬件、节点、服务等对集群做合理的规划,而都是马上动手去安装软件。

PYSPARK_PYTHON=/usr/bin/python3.6

手动检查各个主机上的网络设置,否则有大问题则修改配置:

安装python3.6

以上步骤完成完后 才是动手进行安装与部署。

在各个主机上操作:

配置环境变量

ansible all -a "rm -Rf /var/lib/cloudera /var/log/cloudera /var/run/cloudera /etc/cloudera /tmp/.scm_prepare_node.lock"

iptables

上传并安装

合理的集群规划应该做到以下几点:

默认国外的yum源下载传输速率缓慢,替换为国内阿里云的yum源。

lsblk -d -o name,rota

For MySQL 5.6 and 5.7, you must install the MySQL-shared-compat or MySQL-shared package. This is required for the Cloudera Manager Agent package installation.

Java安装

mysql5.7以上强制密码策略不满足前要通过以下土土妙招修改:

示例集群主要系统进程池池分布如下:

安装完毕后配置修改 /etc/ansible/hosts 对前要管理的主机进行配置,默认配置前要修改编辑 /etc/ansible/ansible.cfg

数据现状

ansible all -a "systemctl start cloudera-scm-agent"

hadoop fs -mkdir /ec_xor

hdfs ec -getPolicy -path /ec_xor

hdfs ec -enablePolicy -policy XOR-2-1-1024k

hdfs ec -setPolicy -path /ec_xor -policy XOR-2-1-1024k

hdfs ec -getPolicy -path /ec_xor

hdfs ec -setPolicy -path /ec_xor -policy RS-10-4-1024k

hdfs ec -enablePolicy -policy RS-6-3-1024k

hdfs ec -setPolicy -path /ec_xor -policy RS-6-3-1024k

ll

vi ec_test.txt

hadoop fs -put ec_test.txt /ec_xor

hdfs ec -setPolicy -path /ec_xor_s -policy XOR-2-1-1024k

hdfs ec -setPolicy -path /ec_xor_m -policy XOR-2-1-1024k

hdfs ec -setPolicy -path /ec_xor_l -policy XOR-2-1-1024k

ll

hadoop fs -put mysql-connector-java-8.0.12-1.el7.noarch.rpm /ec_xor

hadoop fs -put mysql-connector-java-8.0.12-1.el7.noarch.rpm /ec_xor_s

hadoop fs -put mysql-connector-java-8.0.12-1.el7.noarch.rpm /ec_xor_m

hadoop fs -put mysql-connector-java-8.0.12-1.el7.noarch.rpm /ec_xor_l

hadoop fs -put Downloads.zip /ec_xor_s

hadoop fs -put /ec_xor_s

hadoop fs -put Downloads.zip /ec_xor_l

hdfs fsck /ec_xor_s -files -blocks -locations

rz -E

hadoop fs -rmr /ec_xor_s/

hadoop fs -mkdir /ec_xor_s/

hdfs ec -setPolicy -path /ec_xor_s -policy XOR-2-1-1024k

hadoop fs -ls /ec_xor_m/D

hadoop fs -ls /ec_xor_m/

hadoop fs -rm -r /ec_xor_m/Downloads.zip

hadoop fs -rm -r /ec_xor_l/mysql-connector-java-8.0.12-1.el7.noarch.rpm

ll

hadoop fs -put MTracer.zip /ec_xor_s

hdfs fsck /ec_xor_s -files -blocks -locations

hdfs fsck /ec_xor_m -files -blocks -locations

hdfs fsck /ec_xor_l -files -blocks -locations

hdfs ec -getPolicy -path /tmp

hdfs ec -getPolicy -path /

hdfs ec -getPolicy -path /ec_xor

hadoop fs -ls /

hadoop fs -ls /user

hdfs ec -setPolicy -path /user/zhangsan

hdfs ec -getPolicy -path /user/zhangsan

hdfs ec -getPolicy -path /user/yarn

hdfs ec -getPolicy -path /user/zhangsan -policy XOR-2-1-1024k

hdfs ec -setPolicy -path /user/zhangsan -policy XOR-2-1-102

hdfs ec -getPolicy -path /user/yarn

hdfs ec -getPolicy -path /user/zhangsan

hadoop fs -ls /user/zhangsan

hadoop fs -ls /ec_xor_l

hadoop fs -du -h /ec_xor_l

脚本操作说明见:CDH集群自动化部署工具 。

且集群环境较为繁杂,有较多对线上业务造成影响的风险。

使用fio工具对io进行各个场景的读写性能测试。

修改mysql配置文件内容

count 'TestTable', {INTERVAL => 200000, CACHE => 200000}

hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows=200000 randomRead 10

19/04/11 09:13:46 INFO hbase.PerformanceEvaluation: [RandomReadTest] Min: 73645ms Max: 74517ms Avg: 741200ms

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -D test.build.data=/tmp/benchmark -clean

params=""

if [ $# -gt 8 ]

then

硬件资源现状

/opt/cloudera/cm/schema/scm_prepare_database.sh -h cdh2-3 mysql scm scm

修改为关闭情况表:

安装脚本否则执行 配置SSH免密登录、安装软件、操作系统优化、Java等开发环境初始化、MySQL安装、CM服务安装、操作系统性能测试等过程。

num.partitions=8

并有能力不必还可以 提供 集群建设目标

| 数量 | CPU | 内存 | 硬盘 |

| --- | --- | --- | --- |

| 8 | 10 | 64G | 3.3T |

kill -9 pid

name=$1

deploy=$2

memDriv=$3

numExec=$4

coreExec=$5

memExec=$6

class=$6

jar=$7

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -D test.build.data=/tmp/benchmark -read -nrFiles 2000 -fileSize 200

mount -t ntfs-3g /dev/sdb1 /mnt/ukey

sudo -u hdfs hadoop balancer -threshold 10 -policy datanode

Hive、Hue、Impala、Sentry等服务/元数据服务前要部署在同一主机

umount /dev/sdb1

从登录主机上qq克隆好友 到好多好多 主机:

启动mysql服务

进行节点角色划分时尽否则遵守以下原则:

ansible all -m copy -a "src=/tmp/cm/cloudera-manager.repo dest=/etc/yum.repos.d"

ansible all -m shell -a "yum clean all && yum makecache"

IPv6打开的情况表下怎样关闭:

否则服务器硬盘已插入还未挂载则前要先载入硬盘:

spark.pyspark.python

mapreduce.output.fileoutputformat.compresstruemapreduce.output.fileoutputformat.compress.codecorg.apache.hadoop.io.compress.SnappyCodecio.compression.codecsorg.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DeflateCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.Lz4Codec

设置mysql账号密码

创建免密root权限用户

io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DeflateCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.Lz4Codec

顺序写

systemctl start cloudera-scm-server

yarn logs -applicationId $1 | grep '^ batb|Exception' --color