基于UBuntu18.04搭建CDH6.3.2集群
1、前期问题处理步骤
- 问题说明1:
Ubuntu不能直接通过root超用户连接,会出现拒绝登录,或者连接超时
ubuntu一开始并没有给root分配密码,所以切换到root超级用户,输入任何密码都会认证失败。
先登录默认用户,执行:su root
如果出现,在输入root超用户的密码后出现认证失败的字样,按照如下步骤执行
- 报错信息图片如下:
- 只要在命令行中输入sudo passwd root,输入新的密码就ok了
- 之后就可以su root 切换到超用户里面
- 修改配置文件
vim /etc/ssh/sshd_config
修改
PermitRootLogin yes
5. 重启SSH服务
sudo systemctl restart ssh
之后就可以实现直接连接root超用户了
- 问题说明2:
查看ifconfig出现以下报错
原因:缺少依赖包,执行以下命令
apt install net-tools
如果下载出现以下错误
说明系统缺少依赖包,需要更新,执行以下命令
sudo apt-get update
会下载一堆东西
之后在执行 apt install net-tools 就可以正常下载
再次执行 ifconfig 可以正常查看
- 问题说明3:
使用yum install命令报错,显示:
没有已启用的仓库。
执行 “yum repolist all” 查看您拥有的仓库。
您可以用 yum-config-manager --enable <仓库名> 来启用仓库
原因:ubuntu默认软件包管理器不是yum,安装软件时需用apt-get
所以:将上面代码改为:
sudo apt-get install -y unzip
或者
apt install -y unzip
- 问题说明4:
下载CDH所需依赖 此处几个包可能会出现类似下图的错误:
这样就需要把所需下载的依赖包进行拆分下载
- apt install perl openssl-devel
apt install openssl
apt install libssl-dev
2. apt install MySQL-python
apt-get install python-dev
apt-get install libmysqlclient-dev
- 此处的几个依赖可以直接下载
apt install psmisc
apt install fuse portmap
apt install python-psycopg2
2、关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw
sudo systemctl status ufw
3、安装JDK
- 上传oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm到服务器中
- rpm安装
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
- 配置profile文件
末尾添加如下:
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
4. 刷新配置文件
source /etc/profile
5. 验证是否安装成功
java -version
6. 上传连接Mysql依赖Jar包
服务器创建目录 /opt/mysql-connector/
将mysql-connector-java-5.1.47.jar上传到此目录下
mkdir -p /usr/share/java/
cd /opt/mysql-connector/
cp ./mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
4、修改内核参数(所有节点)
cat /proc/sys/vm/swappiness
配置
echo 0 > /proc/sys/vm/swappiness
永久生效
echo "vm.swappiness = 0" >> /etc/sysctl.con
再次查看
cat /proc/sys/vm/swappiness
5、关闭大页面压缩
CDH推荐关闭大页面压缩,防止出现后续页面安装时的警告。
查看THG
cat /sys/kernel/mm/transparent_hugepage/defrag
关闭THG
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
再次查看
cat /sys/kernel/mm/transparent_hugepage/defrag
6、httpd安装(parcel网络源部署)
安装
sudo apt-get install apache2
启动
sudo systemctl start apache2
开启自启
sudo systemctl enable apache2
7、SSH配置免密
生成密钥(三次回车)
ssh-keygen -t rsa
将公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置authorized_keys的访问权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
复制密钥,并输入yes和密码
此处为hostname,也可以改为IP
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
ssh-copy-id slave3
ssh-copy-id slave4
测试是否成功
ssh slave1
使用SSH进行切换时出现报错
去对应的节点上查看
cat /var/lib/ubuntu-release-upgrader/release-upgrade-available
删除此文件
rm /var/lib/ubuntu-release-upgrader/release-upgrade-available
执行此命令
/usr/lib/ubuntu-release-upgrader/release-upgrade-motd
再次查看
cat /var/lib/ubuntu-release-upgrader/release-upgrade-availabl
再次切换,没有上述报错
8、直接安装Mysql
直接安装即可
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl status mysql
sudo apt-get install mysql-client
直接使用 mysql -u root -p123456即可登录
使用Navicat无法连接
编辑 mysqld.cnf 文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf 文件
注释掉或改成0.0.0.0就可以解决
判断方法
netstat -tl | grep mysql
3306前不能是127.0.0.1或者localhost
此处我们修改 bind-address为 0.0.0.0
重启Mysql服务
sudo systemctl restart mysql
验证是否更新配置文件成功
netstat -tl | grep mysql
再次使用navicate连接
9、安装部署NTP时间同步
cloudera manager需要ntp服务。需要安装。使用ntp做时钟同步的操作在这里不做描述,可以自行查找资料。
另外,Ubuntu内置支持了timedatectl,默认开启了时钟同步。可用来调整服务器时间。
尽管时间同步对于大多数目的来说都很好,但是对于即使是最轻微的时间扰动非常敏感的一些应用程序也可以通过ntpd更好地服务,因为它使用更复杂的技术来不断地逐步保持系统时间的正常运行,故而此处还是使用NTP来进行时间同步
在安装ntpd之前,我们应该关闭timesyncd:
timedatectl set-ntp no
验证timesyncd是否已关闭
timedatectl
在输出中查找 systemd-timesyncd.service active: no。这意味着timesyncd已经停止。我们现在可以用apt安装ntp包
sudo apt update
sudo apt install ntp
ntpd将在安装后自动启动。您可以在ntpd中查询状态信息,以验证一切正常
ntpq -p
ntpq是ntpd的查询工具。该
-p标志要求提供关于所述NTP服务器(或信息p EERS)NTPD已连接到。您的输出会略有不同,但应列出默认的Ubuntu池服务器以及其他一些服务器。请记住,ntpd建立连接可能需要几分钟时间。
主节点配置如下:
vim /etc/ntp.conf
在文件末尾加入(主节点)
restrict 服务器IP mask 255.255.255.0 nomodify
server 127.127.1.0
fudge 127.127.1.0 stratum 10
此处 服务器IP 编写成了hostname
参数 | 解析 |
---|---|
ignore | 关闭所有的 NTP 联机服务 |
nomodify | 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。 |
notrust | 客户端除非通过认证,否则该客户端来源将被视为不信任子网 |
noquery | 不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器 |
notrap | 不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。 |
nopeer | 用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟 |
kod | 访问违规时发送 KoD 包。 |
配置文件的第二行和第三行是为了让本机的硬件时间和本机的ntp服务进行时间同步。
配置完成后保存,执行
service ntp restart
ntpq -p
从节点安装NTP服务器
vim /etc/ntp.conf
在最后一行添加
server master prefer
之后下载依赖以及重启任务
apt install ntpdate
apt install ntpsec-ntpdate
service ntp restart
ntpdate -u master
ntpq -p
重启后通过如下命令观察NTP的运行状态:
watch ntpq -p
监控已切换到master 节点同步时间
参数 | 解析 |
---|---|
remote | 它指的就是本地机器所连接的远程NTP服务器; |
refid | 它指的是给远程服务器提供时间同步的服务器; |
st | 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端。所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的; |
when | 几秒钟前曾经做过时间同步化更新的动作; |
poll | 本地机和远程服务器多少时间进行一次同步(单位为秒).在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小; |
reach | 已经向上层 NTP 服务器要求更新的次数; |
delay | 网络传输过程当中延迟的时间,单位为 10^(-6) 秒; |
offset | 时间补偿的结果,单位与 10^(-3) 秒; |
jitter | Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。简单地说这个数值的绝对值越小我们和服务器的时间就越精确; |
* | 它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供; |
+ | 它将作为辅助的NTP Server和带有号的服务器一起为我们提供同步服务. 当号服务器不可用时它就可以接管; |
- | 远程服务器被clustering algorithm认为是不合格的NTP Server; |
x | 远程服务器不可用; |
10、搭建本地仓库(全部节点都需要部署)
CDH安装包下载 CDH官方的网站已经无法直接下载安装包了(需要账号密码),需要Ubuntu版本的CDH软件包以及Ubuntu18.04安装包的可以联系我
1730873674@qq.com 邮箱地址
创建 Ubuntu 的 repository(所有节点)
sudo apt-get install dpkg-dev
sudo apt-get install apache2
service apache2 start
sudo systemctl enable apache2
cd /var/www/html/
sudo chmod -R 777 html/
sudo mkdir -p /var/www/html/cloudera-repos/cm6
解压cm6.3.1-ubuntu1804.tar.gz到cm6目录
sudo tar xvfz ./cm6.3.1-ubuntu1804.tar.gz -C /var/www/html/cloudera-repos/cm6 --strip-components=1
strip-components=1的意思代表,不额外创建目录
移动
allkeys.asc、manifest.json
到/var/www/html/cloudera-repos/cm6目录下
sudo cp allkeys.asc /var/www/html/cloudera-repos/cm6/cd
sudo cp manifest.json /var/www/html/cloudera-repos/cm6/
去/var/www/html目录下,将index.html删除或者改名,这样就不会出现默认界面,而是会变成下面的文件服务器
mv index.html bak_index.html
WEB访问搭建好的仓库
http://本机IP地址/cloudera-repos/cm6/
新建CDH6目录以及上传parcel包
sudo mkdir -p /var/www/html/cloudera-repos/cdh6
sudo cp ./allkeys.asc /var/www/html/cloudera-repos/cdh6/
sudo cp ./CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /var/www/html/cloudera-repos/cdh6/
sudo cp ./CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /var/www/html/cloudera-repos/cdh6/
sudo cp ./CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /var/www/html/cloudera-repos/cdh6/
sudo cp ./manifest.json /var/www/html/cloudera-repos/cdh6/
cd /var/www/html/cloudera-repos/cdh6
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 vi /etc/apt/sources.list.d/cloudera-repo.list
cloudera-repo.list 如果没有自行创建格式一致即可
加入之前配置的源
#Cloudera Manager 6.3.1
deb [arch=amd64] http://本机IP/cloudera-repos/cm6/ bionic-cm6.3.1 contrib
导入仓库签名GPG KEY,archive.key在上面本地源的cloudera-repos/cm6目录下:
sudo apt-key add archive.key
sudo apt-get update
11、安装CM
apt-get install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
Mysql创建所需库
create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database manager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY '123456';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
GRANT ALL ON monitor.* TO 'monitor'@'%' IDENTIFIED BY '123456';
GRANT ALL ON manager.* TO 'manager'@'%' IDENTIFIED BY '123456';
flush privileges;
初始化SCM库
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm -hmaster -uroot -p123456
scm库在初始化时会自动创建
创建本地Parcel仓库
cp /var/www/html/cloudera-repos/cdh6/* /opt/cloudera/parcel-repo/
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
从节点安装
apt-get install cloudera-manager-daemons cloudera-manager-agent
所有需要安装agent节点都需要执行
sed -i "s/server_host=localhost/server_host=master/g" /etc/cloudera-scm-agent/config.ini
启动server
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
systemctl enable cloudera-scm-server
启动agent
systemctl start cloudera-scm-agent
systemctl status cloudera-scm-agent
systemctl enable cloudera-scm-agent
查看日志
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
标识启动成功
服务器访问CDH
curl http//Server节点IP:7180
缺少依赖
apt install curl
再次访问
curl http//Server节点IP:7180
访问CDH WEB页面
本机IP:7180
默认用户、密码:admin admin
注意: zookeeper选择3倍数的节点
HDFS检查集群状态,有如下警告:
存在隐患 : 9 DataNodes are required for the erasure coding policies: RS-6-3-1024k. The number of DataNodes is only 4.
解决方法:配置里面不要RS-6-3-1024k,或者屏蔽该警告,这里选择修改配置
重启服务进行配置更新
添加Sqoop服务
上传ojdbc6.jar连接驱动包放入sqoop目录下
cd /opt/cloudera/parcels/CDH/lib/sqoop/lib
添加KAFKA服务
最终展示图
至此Ubuntu搭建CDH6.3.2已经全部完成
需要相关软件包的可以联系我
QQ邮箱地址:1730873674@qq.com
网易邮箱地址:j1730873674@163.com