前言:
因为centos 7.9停止维护了,最近也有大数据平台搭建的需求,结合网上的资料尝试用ubuntu 18.04的系统来搭建大数据平台。
cdh配置繁琐,但是组件安装超级方便,只需要配置一次,可使用绝大部分大数据组件,并且自带监控功能,组件配置都是一键自动依赖启动,在管理界面,配置所有组件,这就是他的方便之处。
成功后的截图页面
用来测试练手的话,起码要选3台4核16G的机器,不然机器跑不动的。
这里我是用AWS 的EC2搭建的,实际踩的坑比用虚拟机搭建多的多。
资源准备
1.机器和系统的准备
1-1.3台ubuntu 18.04的4核16G的机器,
192.168.1.1 cdh01
192.168.1.2 cdh02
192.168.1.3 cdh03
1-2.AWS安全组所有流量对192.168.1.0/24的内部网络开放,避免后面出现连接节点失败的问题,再倒回来排查这个本应该提前做好的问题。
1-3.使用的机器全部要切换为python2的使用环境:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
144 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
sudo update-alternatives --config python
这个就看机器的python2和python3的版本号是多少,自行修改一下,然后设置python2作为系统运行环境,只要终端输入python 显示是python2.+的版本就可以了
网络是随便定义的,主机名一定要提前修改,不然前期虽然不会报错,但是在大数据平台加服务的时候错误就会出现了。
踩的坑(1)-系统镜像问题:
截止2025年03月,aws已经下架了ubuntu 18.04的官方镜像,只能从aws marketplace寻找ubuntu 18.04的镜像,但是不要去找那种需要订阅的镜像,因为它们几乎都是收费的镜像而且收费还不低。AWS不像阿里云对于老镜像会有包容度,费劲很大精力才找到ubuntu 18.04的镜像,不然就要研究自己自定义ubuntu 18.04的镜像上传到aws 的系统镜像仓库了。
我也尝试过能不能用ubunt 20.04来部署,因为cdh6需要用到python2的环境,现在的新版镜像全部都移除了python2的环境,所以到安装服务的时候出现的依赖问题非常头疼,难以解决。
我先用ubuntu 20.04的系统测试是否可以安装服务包。当出现上面这种问题的时候,就放弃吧,直接降级去找上一个版本的系统吧。有些太新版本的ubuntu 18.04的系统也会出现这种依赖问题,因为它们也已经开始移除python 2的环境,我花了很长时间尝试安装这两个服务最后都会提示这个依赖服务没装,如果不像浪费太多精力在这上面还是老老实实用18.04的镜像。
2.cm6.3.2(ubantu18.04)
ubuntu的cdh必须是bionic格式的
CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel
免密登录
每台机器都操作一下
ssh-keygen -t rsa
为什么要免密登录?1.在传输的时候不需要输入密码,方便集群的搭建。2.他们之间的心跳感知是通过ssh的,如果不能免密登录,部署的时候,就会隔几秒要求你输入一次密码。
关闭防火墙(踩过的坑(2)-没注意到这个防火墙服务)
本来官方镜像是没有开启防火墙,没想到这个三方镜像竟然还设置了防火墙,搞得在部署完服务测试连通性的时候怀疑人生,最后发现80和22端口是通的,其他端口安全组开放了之后还是不通,最终怀疑到防火墙服务上了。
sudo iptables -D INPUT 18
sudo iptables -L -v -n
sudo iptables-save > /etc/iptables/rules.v4
我是先把deny 所有端口流量的规则先删掉了,有多种方法解决,自行取舍。
上传资源
这一步也比较麻烦,安装包很大,使用xshell上传到一半会中断,有一个思路是搭建一个网盘服务,用网盘的wget或者curl链接来下载到服务器,速度也比较快。只要上传到一台机器上,剩下的几台机器就好办了。因为是内网传输。
JDK安装
每台机器都执行如下操作
直接安装附带的java8 的包:
sudo dpkg -i oracle-j2sdk1.8_1.8.0+update181-1_amd64.deb
ll java
lrwxrwxrwx 1 root root 40 Mar 27 02:59 java -> /usr/java/jdk1.8.0_181-cloudera/bin/java*
把安装的java目录改成/usr/java/jdk1.8.0_181-cloudera,然后软连接指向这里,输入java -version能够显示出版本号就可以了。
修改hosts
每台机器运行
sudo vi /etc/hosts
加入下面的这行
192.168.1.1 cdh01
192.168.1.2 cdh02
192.168.1.3 cdh03
注释掉#127.0.1.1 开头的这一行,避免cm识别的时候出问题
设置时区
3台机器
sudo timedatectl set-timezone Asia/Shanghai
配置NTP
安装ntp(主节点)
sudo apt update
sudo apt install ntp
选择一台机器(cdh01),作为时钟同步的主节点
sudo vi /etc/ntp.conf
restrict cdh01 mask 255.255.255.0 nomodify
server 127.127.1.0
fudge 127.127.1.0 stratum 10
service ntp restart
ntpq -p
其他节点安装ntp
sudo apt-get install ntp
sudo vi /etc/ntp.conf
最后一行加入
server cdh01 prefer
sudo service ntp restart
ntpq -p
防止误报,如果某台机器死机,再连上的话,时间没同步,那cdh监控会出现数据丢失或心跳超时等问题,所以要做Ntp。虚拟机测试的话,挂起会出现时间不一致。正式暂时没有发现这个问题。
ntp和ntpdate还有timedatectl都能同步时间,其中ntp是最灵敏的。
mysql的安装
注意版本:使用5.7
服务端
sudo apt install mysql-server
输入y
sudo systemctl start mysql
sudo systemctl status mysql
修改root密码:
update mysql.user set authentication_string=PASSWORD("wakewake123") where User="root";
update mysql.user set plugin="mysql_native_password";
#设置任何host都能用这个用户
update mysql.user set host = '%' where user = 'root';
flush privileges;
#退出客户端
exit;
重新登录,输入密码,查看是否修改成功。
mysql -uroot -pwakewake123
设置外部访问
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql
hive的元数据,一般是放在外部存储,所以需要mysql,同样ClouderManager的监控也需要依赖mysql。
Httpd安装
选择一台机器,在192.168.1.3机器上
sudo apt-get install apache2
sudo systemctl start apache2
sudo systemctl enable apache2
访问成功
它的默认的目录是在/var/www/html下
cdh默认是从官方下载,但是官网下载不下来。所以就把parcel包等东西,放在httpd上,变成内网下载。
在httpd的默认路径,配置cm
cd /var/www
sudo chmod -R 777 html/
sudo mkdir -p /var/www/html/cloudera-repos/cm6
sudo tar zxvf /home/ubuntu/cm6.3.1-ubuntu1804.tar.gz -C /var/www/html/cloudera-repos/cm6 --strip-components=1
移动allkeys.asc、manifest.json到cm
sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cm6/
sudo cp ~/resource/allkeys.asc /var/www/html/cloudera-repos/cm6/
chmod加权限是因为,我等会儿用cdh搭的时候用的非root用户,避免出现访问权限问题。
–strip-components=1 我已经创建过目录了,就不再次创建
manifest.json是对应各个版本的组件定义(如hive、spark这些)
cdh目录配置
sudo mkdir -p /var/www/html/cloudera-repos/cdh6
移动allkeys.asc、manifest.json到cdh
sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/allkeys.asc /var/www/html/cloudera-repos/cdh6
移动parcel包
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /var/www/html/cloudera-repos/cdh6
httpd去掉默认页面
cd /var/www/html
mv index.html bak_index.html
通过页面再次访问httpd
利用httpd配置本地cdh源
在192.168.1.3机器上(部署httpd的机器)
cd /var/www/html/cloudera-repos/cdh6
sudo mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cdh6
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cm6
所有机器执行如下操作:
sudo vi /etc/apt/sources.list.d/cloudera-repo.list
内容如下:
#Cloudera Manager 6.3.1
deb [arch=amd64] http://xx.9.45/cloudera-repos/cm6/ bionic-cm6.3.1 contrib
导入GPG签名
wget http://192.168.1.3/cloudera-repos/cm6/archive.key
sudo apt-key add archive.key
sudo apt-get update
CM安装
选择一台机器当cm-server节点(192.168.1.1)
在192.168.1.1上安装server、agent
sudo apt-get install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
其他所有节点安装agent
sudo apt-get install cloudera-manager-daemons cloudera-manager-agent
注意:假如出现上述错误,需要安装下面依赖:
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
sudo apt-get update
sudo apt-get install libssl1.1
mysql中创建cm对应的组件库
# 创建Cloudera组件所需的数据库
CREATE DATABASE scm 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 hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore 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;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
flush privileges;
导入mysql连接包(所有节点)
sudo cp ~/resource/mysql-connector-java-5.1.46.jar /usr/share/java/
sudo mv /usr/share/java/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar
初始化scm数据库中的数据
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root -h 192.168.1.1
注意导入数据时出现这个错误:
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root -h 127.0.0.1
Enter SCM password:
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing: /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Thu Mar 20 21:30:28 CST 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[ main] DbCommandExecutor ERROR Error when connecting to database.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 263 milliseconds ago. The last packet sent successfully to the server was 252 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)[:1.8.0_362]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)[:1.8.0_362]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.8.0_362]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)[:1.8.0_362]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4912)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1663)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2190)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)[mysql-connector-java.jar:5.1.46]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)[:1.8.0_362]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)[:1.8.0_362]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.8.0_362]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)[:1.8.0_362]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)[mysql-connector-java.jar:5.1.46]
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)[mysql-connector-java.jar:5.1.46]
at java.sql.DriverManager.getConnection(DriverManager.java:664)[:1.8.0_362]
at java.sql.DriverManager.getConnection(DriverManager.java:247)[:1.8.0_362]
at com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java:263)[db-common-6.3.1.96818eaab0a222aa84a7854b8d22c0c7.jar:]
at com.cloudera.enterprise.dbutil.DbCommandExecutor.main(DbCommandExecutor.java:139)[db-common-6.3.1.96818eaab0a222aa84a7854b8d22c0c7.jar:]
[ main] DbCommandExecutor ERROR Exiting with exit code 4
--> Error 4, giving up (use --force if you wish to ignore the error)
解决方案一:这个错误是需要关闭mysql的SSL连接
错误日志中包含:
WARN: Establishing SSL connection without server's identity verification is not recommended.
解决方法修改 /etc/mysql/mysql.conf.d/mysqld.cnf:
[mysqld]
skip_ssl
然后重启 MySQL:
sudo systemctl restart mysql
然后再重新执行一次导入命令就可以了
方案二:也可以在连接时禁用 SSL,修改 scm_prepare_database.sh 命令:
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root -h 127.0.0.1 --jdbc-url="jdbc:mysql://127.0.0.1:3306/scm?useSSL=false"
执行成功结果如下:
所有节点都执行操作
sudo mkdir -p /opt/cloudera/parcel-repo
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /opt/cloudera/parcel-repo
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /opt/cloudera/parcel-repo
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /opt/cloudera/parcel-repo
sudo cp ~/resource/manifest.json /opt/cloudera/parcel-repo
sudo cp ~/resource/allkeys.asc /opt/cloudera/parcel-repo
sudo mv /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
启动服务
去主节点下启动server
sudo systemctl start cloudera-scm-server
sudo systemctl status cloudera-scm-server
sudo systemctl enable cloudera-scm-server
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
问题:启动服务发现日志报错,7180端口并没有成功开启
25-03-22 17:06:33,810 INFO main:com.cloudera.enterprise.CommonMain: Statistics not enabled, c3p0 JMX disabled
2025-03-22 17:06:35,529 WARN main:org.springframework.context.support.GenericApplicationContext: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.cloudera.server.cmf.TrialState': Cannot resolve reference to bean 'entityManagerFactoryBean' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryBean': FactoryBean threw exception on object creation; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
2025-03-22 17:06:35,530 ERROR main:com.cloudera.server.cmf.Main: Server failed.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.cloudera.server.cmf.TrialState': Cannot resolve reference to bean 'entityManagerFactoryBean' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryBean': FactoryBean threw exception on object creation; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:145)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1198)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1100)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at com.cloudera.server.cmf.Main.bootstrapSpringContext(Main.java:421)
at com.cloudera.server.cmf.Main.<init>(Main.java:263)
at com.cloudera.server.cmf.Main.main(Main.java:236)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryBean': FactoryBean threw exception on object creation; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:185)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1640)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:254)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
... 17 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:267)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:846)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:873)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at com.cloudera.enterprise.CommonMain.setupHibernate(CommonMain.java:189)
at com.cloudera.server.cmf.bootstrap.EntityManagerFactoryBean.getObject(EntityManagerFactoryBean.java:158)
at com.cloudera.server.cmf.bootstrap.EntityManagerFactoryBean.getObject(EntityManagerFactoryBean.java:75)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178)
... 22 more
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: HHH010003: JDBC Driver class not found: com.mysql.jdbc.Driver
at org.hibernate.c3p0.internal.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:131)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:257)
... 38 more
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
at org.hibernate.c3p0.internal.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:128)
... 46 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
... 47 more
这个错误的关键是 com.mysql.jdbc.Driver 类找不到,导致 Cloudera Manager 启动失败。
Cloudera Manager 可能依赖 Python 2 组件之前提到 python-mysqldb 依赖问题,可能是 Cloudera 需要 Python 2,而你的系统默认使用 Python 3。
解决方案:就是跟前期准备工作一样,将系统的python环境切换为python 2再重新启动服务就可以了
所有节点启动agent
sudo systemctl start cloudera-scm-agent
sudo systemctl status cloudera-scm-agent
sudo systemctl enable cloudera-scm-agent
节点启动暂时没有发现有错误拉不起来的地方,基础python环境还是要切换好。
cdh大数据平台配置
浏览器访问192.168.1.1:7180
账号密码admin
选60天试用
搜索主机名
勾选所有主机可以用cdh[1-3]的方式,这样可以把所有的节点都列出来进行节点的部署和加入。
如果发现有一个受管了。
关闭受管
点主机,然后所有,然后选中它,点击操作,选从群集中选Cloudera Manager移除。再从主机中选Cloudera Manager移除。
少了张群集的,移除图
1.选择自定义存储库,改成自己对应的cm位置
其他都都删了,把cdh6的httpd地址写进去
不安装jdk,因为我们已经安了
选择其他用户,下面输入对应的这个账号的密码
安装(和这个图差不多,只要所有节点都能连上安装服务不报错,很快就可以装完了)
安装没问题,进入下一个页面,点击inspect network和inspect hosts
网络问题主要就是要注意安全组的端口放行
发现有个小黄点
所有机器执行(临时的)
sudo sysctl vm.swappiness=10
然后永久修改(所有机器)
sudo -i
echo 'vm.swappiness=10'>> /etc/sysctl.conf
修复后点击重新运行
然后点继续
角色分配
角色分配方面还是要自己选择,不然可能服务都装在一个节点上,造成一台服务器负载过重。
hive元数据配置
选是,用jdbc链接
填写mysql数据库对应机器的hostname
jdbc:mysql://192.168.1.1:3306/metastore?useSSL=false&useUnicode=true&&characterEncoding=utf-8
主机填写数据库的主机,其他填写mysql的账号密码,数据库对应之前创建的数据库
点击下测试连接,没问题的话就继续
看下配置,没问题点击,继续
解决问题
主机 dns解析不一致
内网直接关掉,就行,也不需要DNS解析
纠删码
DataNodes are required for the erasure coding policies: RS-6-3-1024k. The number of DataNodes is only 4.
如果用这个算法检查,至少是9台datanode,这个算法太屌了,我们没有那么多机器。直接屏蔽,不需要这个。然后重启过时服务。
重启过时服务
负载情况
评论区