超详细CDH-5.13.1+Presto-0.216完全离线部署

CDH-5.13.1完全离线安装

前不久实施的一个项目,机房环境无法访问外部网络,无奈只能离线部署

安装准备

  • 安装环境
系统vCPU内存/GB系统盘/GB数据盘/GBJDKCDHPresto
CentOS-7.4163260GB500GBjdk1.8.0_2615.13.10.216
  • 集群规划
IP主机名角色
10.0.0.1cdh01master
10.0.0.2cdh02core
10.0.0.3cdh03core
10.0.0.4cdh04core
10.0.0.5cdh05core
10.0.0.6cdh06core
10.0.0.7cdh07core
10.0.0.8cdh08core
10.0.0.9cdh09core
10.0.0.10cdh10core

基础配置

1. ( 可选)下载以下基础软件并打包上传到所有机器,该步骤需在一台可连接互联网的机器上执行

yum install --downloadonly --downloaddir=./rpm/ rpcbind vim wget lrzsz zip unzip bzip2 bunzip2 cronolog git nc sysstat gcc+ gcc-c++  ntp

tar -zcvf rpm.tar.gz rpm

systemctl start rpcbind

2. 所有机器:解压并批量安装基础软件

tar -zxvf rpm.tar.gz

cd rpm

rpm -Uvh --force --nodeps *rpm

3. 所有机器:修改主机名和hosts

  • 执行如下命令 修改/etc/hosts
cat >> /etc/hosts << EOF
10.0.0.1    cdh01 master
10.0.0.2    cdh02
10.0.0.3    cdh03
10.0.0.4    cdh04
10.0.0.5    cdh05
10.0.0.6    cdh06
10.0.0.7    cdh07
10.0.0.8    cdh08
10.0.0.9    cdh09
10.0.0.10   cdh10
EOF
  • 修改主机名
hostnamectl set-hostname master

5. 所有机器:关闭防火墙和selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

6. 所有机器:执行如下三段命令添加配置

echo never > /sys/kernel/mm/transparent_hugepage/defrag 
echo never > /sys/kernel/mm/transparent_hugepage/enabled
  • 添加到开机启动
cat << EOF >> /etc/rc.local
# Disable transparent_hugepage
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF
  • 修改内核配置
cat << EOF >> /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 10
EOF
  • 加载配置
sysctl -p

7. 所有机器:启用 NTP 服务将cdh01服务器 设置为 ntp-server

  • cdh01机器上操作: 编辑 /etc/ntp.conf 注释掉 server0~n 这几行,增加下面配置
server 127.127.1.0                                          ##  设置本机为NTP服务器
fudge 127.127.1.0 stratum 10                               ##  没有时间来源以本机时间为准
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap    ##  允许客户端10.0.0.0网段的所有主机向本机请求时间同步
  • cdh02~cdh10机器上操作:编辑 /etc/ntp.conf 注释掉 server0~n这几行,增加下面配置
server cdh01
  • 所有机器重启ntp,并添加开机启动
systemctl restart ntpd

systemctl enable ntpd.service
  • 使用以下命令检测ntp服务是否可用,初次检测有延迟,待ntp服务启动几分钟后再检测
ntpstat
ntpq -p

8. 所有机器:卸载系统自带JDK 安装指定版本JDK

  • 卸载系统自带jdk
yum remove -y *jdk*
yum remove -y *java*
  • oracle官网下载 jdk-8u261并安装到所有机器,也可以使用其他版本jdk,但由于本次部署需要presto-0.216,该版本preso需要较高版本jdk.。不支持openjdk
rpm -ivh jdk-8u261-linux-x64.rpm

9. cdh01到cdh02~cdh10免密互信

  • cdh01机器操作
ssh-keygen -t rsa

ssh-copy-id  cdh02
. . . . .
ssh-copy-id  cdh10

MySQL安装

1. mysql下载:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
2. 上传到cdh01服务器并解压,删除多余组件,只保留以下6个

mysql-community-client-5.7.30-1.el7.x86_64.rpm
mysql-community-common-5.7.30-1.el7.x86_64.rpm
mysql-community-devel-5.7.30-1.el7.x86_64.rpm
mysql-community-libs-5.7.30-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm
mysql-community-server-5.7.30-1.el7.x86_64.rpm

3. 安装mysql

rpm -Uvh --force --nodeps *rpm

4. mysql初始化

  • 新建用户和授权
mysql>uninstall plugin validate_password;

mysql>alter user 'root'@'localhost' identified by 'rootpasswd';

mysql>grant all privileges on *.* to 'root'@'cdh01'identified by 'cdh01' with grant option;

mysql>grant all privileges on hive.* to 'hiveuser'@'%'identified by 'hivepasswd';

mysql>grant all privileges on monitor.* to'monitoruser'@'%' identified by 'monitorpasswd';

mysql>CREATE DATABASE hive CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

mysql>CREATE DATABASE monitor CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

Cloudera-Manager安装

1. 下载如下安装包并上传到 cdh01:/opt/tmp/

现在不能直接下载了,还好有库存

2. cdh01机器操作:安装cloudera-manager

## 将cloudera-manager解压至  /opt/目录下
tar -zxf /tmp/cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz -C /opt/
## 将cdh主要文件拷贝到 /opt/cloudera/parcel-repo/下面
mv /opt/tmp/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel  /opt/cloudera/parcel-repo/
mv /opt/tmp/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha  ##  必须将后缀改为  ".sha"
mv /opt/tmp/manifest.json  /opt/cloudera/parcel-repo/

## 添加软链
ln -s /opt/cm-5.13.1 /opt/cm

3. 拷贝mysql连接驱动

  • cdh01机器操作
mkdir /usr/share/java/
tar -zxf /tmp/mysql-connector-java-5.1.47.tar.gz
cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar

## 拷贝到其余所有子节点
scp -r /usr/share/java   cdh02:/usr/share/    
.......
scp -r /usr/share/java   cdh10:/usr/share/

4. cdh数据库初始化

/opt/cm/share/cmf/schema/scm_prepare_database.sh mysql scm -hcdh01 -uroot -p'rootpasswd' --scm-host cdh01 scm scm123 scm123

5. 修改cloudera-scm-agen配置:**/opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini**

server_host=cdh01

parcel_dir=/opt/cloudera/parcels     ##  默认安装路径,可根据情况,选择空间较大的分区安装

6. 拷贝cm目录到其余所有节点cdh02~cdh10

scp -r /opt/cm  cdh02:/opt/
........
scp -r /opt/cm  cdh10:/opt/

7. 所有机器:添加用户

useradd --system --home=/opt/cm/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

8. CDH01机器:对**/opt/cloudera/**** 目录赋权**

chown -R cloudera-scm:cloudera-scm /opt/cloudera/

9. 所有机器:启动: **cloudera-scm-agent** cdh01机器启动:**cloudera-scm-server**

## 主节点cdh01

/opt/cm/etc/init.d/cloudera-scm-server restart      ##  第⼀次启动需要初始化数据库,监听端⼝启动会延迟出现

## 所有节点cdh01~cdh10

/opt/cm/etc/init.d/cloudera-scm-agent restart

10. 开始安装CDH集群

  • 浏览器访问 cdh01:7180 (用户名、密码:admin/admin)
  • 安装步骤:参考 CDH安装步骤详解

Presto安装

  • 由于CDH并不包含Presto,这里单独安装
  • Presto集群角色规划
IP主机名角色
10.0.0.1cdh01coordinator
10.0.0.2cdh02worker
10.0.0.3cdh03worker
10.0.0.4cdh04worker
10.0.0.5cdh05worker
10.0.0.6cdh06worker

1. cdh01机器安装Presto

  • 解压presto/opt/cloudera/parcels/
tar -zxf /opt/tmp/presto-server-0.216.tar.gz  -C /opt/cloudera/parcels

ln -s /opt/cloudera/parcels/presto-server-0.216  /opt/cloudera/parcels/presto

2. 准备配置文件

注意:
query.max-memory:表示单个查询在分布在所有相关节点上能用的内存之和的最大值。
query.max-memory-per-node:单个查询在单个节点上用户内存能用的最大值,从定义上就能看出:query.max-memory-per-node 必须小于query.max-total-memory-per-node
同样: query.max-memory 也必须小于query.max-total-memory
另外:query.max-total-memory-per-node 与memory.heap-headroom-per-node 之和必须小于 jvm max memory .也就是jvm.config 中配置的-Xmx

  • 进入配置文件路径 /opt/cloudera/parcels/presto/etc
  • 创建 node.properties 内容如下
node.environment=myprestocluster    ## 集群名称,同一个集群中的所有Presto节点必须拥有相同的集群名称
node.id=cdh01     ##   每个Presto节点的唯一标识,且必须唯一
node.data-dir=/opt/cloudera/parcels/presto/data     ##  数据存储目录的位置
  • 创建 jvm.config 内容如下
-server
-Xmx60G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
  • 创建 config.properties 内容如下
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8889
query.max-memory=50GB
query.max-memory-per-node=6GB
discovery-server.enabled=true
discovery.uri=http://cdh01:8889
  • 创建 log.properties 内容如下
com.facebook.presto=INFO

3. Presto集成Hive

  • 进入配置文件路径 /opt/cloudera/parcels/presto/etc
  • 新建catalog目录
  • catalog 目录下新建 hive.properties 配置文件,添加如下内容
connector.name=hive-hadoop2
hive.metastore.uri=thrift://cdh01:9083
hive.parquet.fail-on-corrupted-statistics=false
hive.metastore-cache-ttl=20m
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.allow-drop-table = true
hive.compression-codec=NONE
hive.metastore-refresh-interval=1m

4. worker节点部署

  • 将Presto目录分发至worker节点
scp -r /opt/cloudera/parcels/presto  cdh02:/opt/cloudera/parcels/
.................
scp -r /opt/cloudera/parcels/presto  cdh06:/opt/cloudera/parcels/
  • 依次修改worker节点的 node.propertiesconfig.properties
    • 编辑 node.properties
node.id=cdh04   ## 每个节点的node.id必须唯一
  • 编辑 config.properties
coordinator=false   ## worker节点均设置为false
#discovery-server.enabled=true  ##注释掉

5. 启动Presto

/opt/cloudera/parcels/presto/bin/launcher restart

5. 验证

presto --server localhost:8889 --catalog=hive --schema=default
SELECT * from system.runtime.nodes

参考链接

  • Cloudera官方文档
    • https://docs.cloudera.com/documentation/enterprise/5-13-x/topics/installation.html
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值