CDH安装部署
环境准备
准备三台CentOS虚拟机:一个Cloudera Manager节点、两个Agent节点
安装如下:
CDH71:Server GUI、Development Tools、MariaDB
CDH72:Server GUI、Development Tools
CDH73:Server GUI、Development Tools
系统基本安装配置
关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
编辑主机名:
/etc/hosts
配置免密码登录
配置NTP服务(时间服务器)
创建目录:mkdir /root/cdroom/
挂载光盘:mount /dev/cdrom /root/cdroom/
删除原来的所有repo文件
创建yum的源文件: vi /etc/yum.repos.d/my.repo
[centos-yum]
baseurl=file:///root/cdroom
enabled=1
gpgcheck=0
开启NTP服务
yum install ntp
systemctl is-enabled ntpd
systemctl enable ntpd
systemctl start ntpd
配置JDK
卸载系统原有的Java环境
第一步:使用下面的命令查看当前所有的Java环境的安装包
rpm -qa | grep java
第二步:使用下面的命令删除所有的Java安装包
rpm -e --nodeps 包名
安装新的JDK环境
将jdk-8u161-linux-x64.rpm上传到/opt目录
安装JDK:rpm -ivh jdk-8u161-linux-x64.rpm
执行下面的命令,设置环境变量:
echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
验证JDK环境
which java
java -version
配置MariaDB(CDH71上)
启动MariaDB
systemctl start mariadb
systemctl enable mariadb (开机自启动)
配置MariaDB
mysql_secure_installation
#首先是设置密码,会提示先输入密码
Enter current password for root (enter for none):<–初次运行直接回车
#设置密码
Set root password? [Y/n] <–是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
#其他配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB
登录数据库:mysql -uroot -pWelcome_1
create database hive;
create database amon; ---> 这个是CDH的activity monitor
create database oozie;
create database hue;
安装数据库驱动
yum install mysql-connector-java
安装配置Clouder Manager(在cdh71上)
将cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz上传至/opt目录,并解压
tar -zxvf cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz
将mysql的驱动放到/opt/cm-5.12.1/share/cmf/lib/中
cp /usr/share/java/mysql-connector-java.jar /opt/cm-5.12.1/share/cmf/lib/
初始化Cloudera Manager的数据库元信息
/opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pWelcome_1 --scm-host localhost scm scm scm
创建cloudera-scm用户
useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
将以下文件上传至/opt/cloudera/parcel-repo/目录
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
manifest.json
重命名文件CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
改名为:CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha (注意:少了一个1)
修改/opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
配置Cloudera Agent(cdh72和cdh73)
从主节点cdh71上将Cloudera Manager Agent复制到agent节点(cdh72和cdh73)上
scp -r /opt/cm-5.12.1 [email protected]:/opt/
scp -r /opt/cm-5.12.1 [email protected]:/opt/
在agent节点(cdh72和cdh73)上创建cloudera-scm用户
useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
部署CDH5
在cdh71启动服务Cloudera Manager Server
/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start
启动server慢,日志路径
/opt/cm-5.12.1/log/cloudera-scm-server/cloudera-scm-server.log
在cdh72和cdh73上启动的agent
/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start
访问cdh71上的Cloudera Manager:
端口:7180(http://192.168.222.71:7180/cmf/login)
用户名密码:admin/admin
接受用户条款
选择60天试用版
点击“继续”
为CDH群集安装指定主机(选择cdh72和cdh73)
选择存储库(注意:要删除默认的远程库。如果之前没有做这一步,会有错误。需要重新安装。因为我们使用的是虚机,存储库在本地,不用远程访问下载)
将存储库部署到主机,耗时很久
Cloudera Manager首页
检查每台机器上的Java后台进程
验证CDH
su - hdfs
hdfs dfs -ls /
hdfs dfs -mkdir /input
hdfs dfs -ls /
遇到的一些问题:
分配存储空间的报错,修改过host主机名,导致访问不到。
- 修改host主机名,重新配置免密码登录
- 71上的mysql数据库,HOSTS表中修改NAME。
NTP时钟不同步
参考:https://blog.csdn.net/lukabruce/article/details/80805929
配置NTP时钟同步
在所有要安装CDH环境的设备中设置统一时钟同步服务。如果我们有时钟服务器,那么我们需要在每一台设备上进行NTP客户端配置;如果没有,我们就将server主机作为时钟服务器,对server主机进行NTP服务器配置。其他服务器来同步这台服务器的时钟。
本示例中将按照没有时钟服务器的情况进行演示,将server主机配置为NTP服务器,其他主机配置为NTP客户端。如果有时钟服务器更简单,所有的服务器都配置为NTP客户端就好了。
NTP服务器配置(在server主机上配置,如果有时钟服务器,server主机也是配置为客户端)
修改/etc/ntp.conf
对该文件的内容进行以下的修改:
1、注释掉所有的restrict开头的配置
2、找到restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap,取消注释,并将其中IP和掩码修改为真实环境IP和掩码,此行配置为允许ntp客户端连接的配置
3、找到server 0.centos.pool.ntp.org iburst,并将所有server配置进行注释
4、添加下面两行内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
启动NTP服务
执行以下命令启动ntp服务
[[email protected] ~]# systemctl restart ntpd
查看服务状态
启动服务后,使用ntpq -p查看服务状态,当reach达到比较大的值后(一般为17),再进行NTP客户端配置。
修改/etc/ntp.conf
对该文件进行以下内容的修改:
1、注释所有restrict和server配置
2、添加下面注释,需要修改以下的IP为NTP服务器的IP(在本案例中就是server主机的IP)
server 192.168.187.5
手动同步时间
为了避免首次同步时间比较慢,和测试一下我们是否配置正确,我们先使用下面命令手工同步一次。
[[email protected] ~]# ntpdate 192.168.187.51
启动NTP服务
[[email protected] ~]# systemctl restart ntpd
将所有的主机的ntp服务设置为开机自启动
centos6:[[email protected] ~]# chkconfig ntpd on
centos7:[[email protected] ~]# systenctl enable ntpd.service
首次安装HDFS服务报错,原因是机器的内存小和NTP时钟不一致。进去系统后,卸载挂载主机,重新分配主机,多次尝试后就可以了。登录系统,主机界面中加HDFS服务,按照默认配置参数一路安装。
修改主机名
在安装系统的时候,主机名做过修改,导致启动的时候一直连接不上。主要的问题是对hostname 和 hosts的区别不清
修改主机名称
修改主机名的原因是为了方便我们记忆与管理,但这并不是主要原因,更主要的是防止hadoop的内部实现机制要通过主机名来路由到该主机的IP上,我们需要保证每一台机器的主机名不相同。
本示例中仅以第一台服务器的操作为示例,其他的服务器都是相同的操作,但需要注意的是一定要保证每一台主机的hostname不相同。(建议使用hdfs1,hdfs2,hdfs3.. . 这样的格式一次为每一台服务器命名)。
以下给出修改主机名的操作命令(在ROOT下进行操作):
Centos6:
[[email protected] ~]# vi /etc/hostname
将内容修改为新的hostname
Centos7:
[[email protected] ~]# hostnamectl set-hostname hdfs1;
[[email protected] ~]# hostname hdfs1
执行完以上的命令退出,重新登录即可。
主机名中不能使用下划线(_)。
主机名不能保护大写字符
修改HOSTS的原因主要有两点:
1、为了防止hadoop内部实现机制通过主机名来进行对主机的访问。
2、为了我们在配置过程中书写起来比较方便,看起来也一目了然。
这里要说明的是,我们配置HOSTS并不是只配置本机IP和主机的对应关系,而是我们规划中的每一台机器都要配置所有机器的IP和主机名称的对应关系。
修改HOSTS方法:
以下是修改HOSTS的操作命令(在ROOT用户下进行操作):
修改/etc/hosts文件,在文件中添加规划中的所有主机的IP和主机名的对应关系。而且每一台机器都配置。
[[email protected] ~]# vi /etc/hosts
在该文件中添加以下格式的内容,该内容是我们规划中的所有主机的IP和主机名称,而且每一台机器的HOSTS中都要添加相同的内容,IP与主机名用一个TAB键隔开。
192.168.186.101 hdfs1
192.168.186.102 hdfs2
192.168.186.103 hdfs3
……
如果想要多个名称路由到同一个IP,我们只需要在后边继续添加即可,同样是使用TAB键隔开。例如:
192.168.186.101 hdfs1 master spark hadoop