ubuntu18.04.6离线安装CDH6.3.2
安装计划
4台服务器,1台做主节点,3台做从节点,主节点上安装数据库、配置ClouderaManager离线源
地址 / 主机名 / 安装软件
10.10.30.71 sbrainmaster JDK、ntp、mysql、cloudera-scm-server、cloudera-manager-daemons、cloudera-manager-agent
10.10.30.72 sbrainslave1 JDK、ntp、cloudera-manager-daemons、cloudera-manager-agent
10.10.30.73 sbrainslave2 JDK、ntp、cloudera-manager-daemons、cloudera-manager-agent
10.10.30.74 sbrainslave3 JDK、ntp、cloudera-manager-daemons、cloudera-manager-agent
联网主机下载需要的软件包及其依赖
- 新建离线包文件夹
mkdir -p /home/software/offline-packages
- 给文件夹授读写执行权限,赋予_apt用户权限,因为通常apt指令使用用户_apt进行下载
chown -Rv _apt:root /home/software/offline-packages/
chomod -Rv 700 /home/software/offline-packages/
- 下载需要的软件包及其依赖,
替换为需要下载的包名。下载时最好每个软件单独建立文件夹,传输起来效率更高。
cd /home/software/offline-packages
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <package-name> | grep "^\w" | sort -u)
-
需要提前下载的软件包主要有:
- apache2(web服务器,用于搭建ClouderaManager资源离线源)
- ntp(时间同步)
- mysql-server(mysql服务器)
- mysql-client(mysql客户端)
- libmysqlclient-dev(提供MySQL C/C++ 的开发库,以及API)
- libmysql-java(提供MySQL JDBC驱动,用于Java应用程序与MySQL数据库的连接)
-
最主要的安装包自行找资源下载:
- CM6.3.1
- CDH6.3.2
- CDH 是Cloudera 公司对 Apache Hadoop 及相关组件的企业级发行版,包含 HDFS、YARN、Spark、Hive 等大数据组件。
- Cloudera Manager 是可视化管理平台,用于自动化部署、监控和维护 CDH 集群。提供 Web 界面和 API 操作。
- Parcel 是CDH组件的二进制分发包,类似于 Linux 的 RPM/DEB,但更轻量、更易于管理,支持版本隔离和快速回滚。
- Cloudera Manager 通过 Web 界面或 API 管理 Parcels。
- 打包下载的离线包,传输到离线主机
tar -zcvf archives.tar.gz /tmp/offline-packages
- 拷贝到离线主机后,解压到apt工具的默认目录/var/cache/apt/archives
tar -zxvf archives.tar.gz
配置Cloudera Manager资源web服务
- 安装web服务(选任意节点,此处用主节点)
apt install apache2
- 测试web服务
浏览器输入10.10.30.71,出现apache的欢迎页面,apache2的默认资源目录位于/var/www/html
- 配置CM资源
新建目录,并解压离线CM资源到此处
mkdir -p /var/www/cloudera-repos
- 设置web服务
systemctl start apache2
systemctl enable apache2
- 验证Cloudera Manager资源web服务
http://10.10.30.71/cloudera-repos/cdh6/
http://10.10.30.71/cloudera-repos/cm6/
配置Coudera Manager安装包离线源(全部节点都需要配置)
- 创建文件
touch /etc/apt/sources.list.d/caloudera-manager.list
- 编辑内容格式如下:
deb http://<web_server>/cm <codename> <components>,可以从离线包的./conf/distributions找到 codename 和 components。
- 添加本地CM离线源
deb [arch=amd64] http://10.10.30.71/cloudera-repos/cm6 bionic-cm6.3.1 contrib
- 下载GPG签名
wget http://10.10.30.71/cloudera-repos/cm6/archive.key
- 添加key文件,更新源
apt-key add archive.key
apt update -y
- 从离线源下载CDH的Parcel分发包到主机目录/opt/cloudera/parcel-repo/
cd /opt/cloudera/parcel-repo
wget http://10.10.30.71/cloudera-repos/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel
wget http://10.10.30.71/cloudera-repos/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
wget http://10.10.30.71/cloudera-repos/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256
wget http://10.10.30.71/cloudera-repos/cdh6/manifest.json
安装JDK(所有节点都要安装)
- 安装
dpkg -i oracle-j2sdk1.8_1.8.0+update181-1_amd64
安装完以后,java安装位置在/usr/lib/jvm/java-8-oracle-cloudera
- 设置环境变量
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-8-oracle-cloudera
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 使环境变量生效
source /etc/profile
- 验证
echo $JAVA_HOME
java -version
java
javac
NTP安装
NTP服务器
- 安装
apt install ntp
- 配置
vi /etc/ntp.conf
注释外部NTP服务器,添加以下内容:
- 使用本地系统时钟,stratum 10:设置较低优先级
server 127.127.1.0
fudge 127.127.1.0 stratum 10
- 限制访问的范围和权限
restrict 10.10.30.0 mask 255.255.255.0 nomodify notrap
- 设置时间
sudo date -s "2025-07-08 23:30:00"
- 重启服务
systemctl restart ntp
systemctl status ntp
- 验证
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 10 l 1 64 377 0.000 0.000 0.000
LOCAL(0) 表示本地时钟,* 表示正在使用,stratum 10 符合配置。
- 开机自启动
systemctl enable ntp
NTP客户端
- 安装
sudo apt install ntp
- 配置
vi /etc/ntp.conf
注释外部NTP服务器,添加以下内容:
server 10.10.30.71 iburst //iburst :加速初始化
- 重启服务
systemctl restart ntp
systemctl status ntp
- 验证NTP同步
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*sbrainmaster LOCAL(0) 11 u 6 64 377 0.077 0.501 0.257
timedatectl
Local time: Wed 2025-07-09 11:44:13 CST
Universal time: Wed 2025-07-09 03:44:13 UTC
RTC time: Wed 2025-07-09 03:44:13
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
systemd-timesyncd.service active: no
RTC in local TZ: no
- 开机自启动
systemctl enable ntp
mysql安装(仅在主节点安装)
- 安装mysql组件及其依赖
cd mysql_offline_packages
dpkg -i *.deb
若遇到因为安装顺序引起的依赖包未配置的情况,使用如下语句解决
dpkg --configure -a
再次安装
dpkg -i *.deb
- 查看运行状态,若未启动,则启动之
systemctl status mysql
systemctl start mysql
- 查看数据库原始用户信息
cat /etc/mysql/debian.cnf
- 使用debian-sys-maint用户及密码登陆mysql,添加root用户密码,为说明简单此处密码设为123456
mysql -u debian-sys-maint -p XXXXXX
update mysql.user set authentication_string=password('123456') where user='root';
update mysql.user set plugin="mysql_native_password";
flush privileges;
- 为root用户授权:从任意主机使用密码123456登陆
use mysql;
grant all on *.* to 'root'@'%' identified by '123456';
flush privileges;
quit;
- 设置mysql外部访问,0.0.0.0表示允许从任意主机访问
vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
systemctl restart mysql
- 测试连接
mysql -u root -p
- 设置mysql自启动
systemctl enable mysql
CM安装
所有主机
- 配置主机hosts文件
打开hosts文件
vi /etc/hosts
添加如下内容
10.10.30.71 sbrainmaster
10.10.30.72 sbrainslave1
10.10.30.73 sbrainslave2
10.10.30.74 sbrainslave3
刷新DNS
systemd-resolve --flush-caches
验证
ping sbrainmaster
- 配置ssh免密
在所有节点执行,生成密钥,生成的密钥默认在/root/.ssh目录
ssh-keygen -t rsa
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
分别将从节点的密钥传输到主节点
scp /root/.ssh/authorized_keys root@sbrainmaster:/root/.ssh/authorized_keys_slave1
scp /root/.ssh/authorized_keys root@sbrainmaster:/root/.ssh/authorized_keys_slave2
scp /root/.ssh/authorized_keys root@sbrainmaster:/root/.ssh/authorized_keys_slave3
在主节点合并密钥
cd /root/.ssh
cat authorized_keys_slave1 >> authorized_keys
cat authorized_keys_slave2 >> authorized_keys
cat authorized_keys_slave3 >> authorized_keys
分发合并后的密钥到各个从节点
cd /root/.ssh
scp authorized_keys root@sbrainslave1:/root/.ssh/authorized_keys
scp authorized_keys root@sbrainslave2:/root/.ssh/authorized_keys
scp authorized_keys root@sbrainslave3:/root/.ssh/authorized_keys
联通互测,不需要密码则配置成功
在sbrainmaster上:
ssh sbrainslave1
ssh sbrainslave2
ssh sbrainslave3
在sbrainslave1上:
ssh sbrainmaster
ssh sbrainslave2
ssh sbrainslave3
...
主节点安装
- 在主节点上安装CM的守护、服务器、代理服务
apt-get install cloudera-manager-daemons cloudera-manager-server cloudera-manager-agent
- 创建必要的数据库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE cmserver DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
查看是否新建成功
mysql> show databases;
libmysql-java 安装后,通常在 /usr/share/java/mysql-connector-java.jar 提供 JAR 文件,用于java应用与mysql数据库连接。
也可以单独下载mysql连接器 mysql-connector-java-8.0.25.tar.gz,要注意CM使用的连接器的版本。
tar -xzf mysql-connector-java-8.0.25.tar.gz
cd mysql-connector-java-8.0.25
复制并重命名连接器到/usr/share/java目录
cp mysql-connector-java-8.0.25.jar /usr/share/java/mysql-connector-java.jar
- 初始化SCM数据库
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root 123456 -h sbrainmaster
查看初始化的配置项
vi /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=sbrainmaster
com.cloudera.cmf.db.name=cmserver
com.cloudera.cmf.db.user=root
com.cloudera.cmf.db.setupType=EXTERNAL
com.cloudera.cmf.db.password=123456
- 设置cloudera-scm-server服务
systemctl restart cloudera-scm-server
systemctl status cloudera-scm-server
- 查看日志
tail -n 100 /var/log/cloudera-scm-server/cloudera-scm-server.log
- 查看cloudera-scm-server服务的配置项
cat /lib/systemd/system/cloudera-scm-server.service
- 若修改配置项,保存后,重新加载 systemd 配置
systemctl daemon-reload
systemctl restart cloudera-scm-server
- 启动cloudera-scm-server服务后,查看状态,遇到问题:
CDH ERROR StatusLogger No log4j2 configuration file found. Using default configuration:...
解决:
cd /opt/cloudera/cm
cp log4j.properties log4j2.properties
systemctl restart cloudera-scm-server
从节点安装
-
安装jdk
-
安装CM的守护、代理服务
apt-get update
apt-get install cloudera-manager-daemons cloudera-manager-agent
一般会提示存在依赖问题,下载依赖的软件包及其依赖,传输和安装,解决依赖问题
- 修改配置
vi /etc/cloudera-scm-agent/config.ini
修改server_host=localhost为server_host=sbrainmaster
- 启动服务
systemctl start cloudera-manager-agent
systemctl status cloudera-manager-agent
- 开机启动
systemctl enable cloudera-manager-agent
- 优化节点性能,所有节点执行以下命令
sysctl vm.swappiness=10
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo 'never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
CM的WEB页面配置
-
浏览器访问10.10.30.71:7180,启动CM配置页面,默认账户admin/admin,配置服务器角色等。
-
在配置过程中,由于要使用hive组件,却没有初始化hive数据库,产生了错误。
重新初始化hive元数据
cd /opt/cloudera/parcels/CDH/lib/hive/bin
./schematool -initSchema -dbType mysql --verbose
hive数据库连接还报错:虽然在CDH页面中已经配置了元数据信息,但在配置文件中并没有看到。
手动在配置文件中添加连接数据库的相关信息:
点击查看代码
vi /etc/hive/conf/hive-site.xml
<property>
<name>hive.metastore.db.type</name>
<value>mysql</value>
<description>元数据库类型指定为使用mysql</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>指定mysql的驱动</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>指定元数据库用户</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>指定元数据库密码</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://sbrainmaster/metastore?createDatabaseIfNotExist=true</value>
<description>指定mysql连接串</description>
</property>

浙公网安备 33010602011771号