目录
简介
- Apache Hadoop
由Apache 公司开源的Hadoop版本。涵盖了最原生的Hadoop特性,所有的Hadoop发行版均基于该版本进行改进。 - Cloudera CDH
由Cloudera公司发行的Hadoop版本,全称(Cloudera’s Distribution Including Apache Hadoop)。该版本在基于原生Apache Hadoop版本进行改进,添加了补丁和自行开发的组件,更加稳定易用。目前国内使用最多的版本。 - Hortonworks Ambari
-Ambari是Hortonworks开源的Hadoop平台的管理软件,具备Hadoop组件的安装、管理、运维等基本功能,提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
1、技术细节:hadoop版本、组件及功能选择
2、易于部署:管理工具选择、版本更新、补丁添加等等
3、易于维护:集群管理、容灾能力等
4、成本:版本费用、计费模式和许可证
5、企业应用集成的支持:选择的Hadoop应用和现有企业其他应用集成的支持。
1. 软件环境
名称 | 版本 |
---|---|
Linux | CentOS 7x64 |
CM | 5.12.1 |
CDH | 5.12.1 |
主机名 | 内存 | CPU | IP | 角色 |
---|---|---|---|---|
cdh01 | 5G | 1核2线程 | 192.168.88.121 | CM server,agent |
cdh02 | 2G | 1核2线程 | 192.168.88.122 | agent |
cdh03 | 2G | 1核2线程 | 192.168.88.123 | agent |
2. 虚拟机配置
2.1 设置网络IP(NAT模式)
- 修改配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 - 注释#BOOTPROTO=“dhcp”
- 添加
IPADDR=192.168.88.121
NETMASK=255.255.255.0
GATEWAY=192.168.88.2
DNS1=192.168.88.2 - 其他节点同理
TYPE="Ethernet" #BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="eno16777736" UUID="858a5a33-4c55-49e9-8b59-1cfeb56d4b8b" DEVICE="eno16777736" ONBOOT="yes" IPADDR=192.168.88.121 NETMASK=255.255.255.0 GATEWAY=192.168.88.2 DNS1=192.168.88.2
2.2 关闭防火墙
- 关闭:
systemctl stop firewalld
systemctl disable firewalld - 查看:systemctl status firewalld
2.3 永久修改设置主机名
- vi /etc/hostname 注意:需要重启生效->reboot
2.4 配置映射文件
- vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.88.121 cdh01 192.168.88.122 cdh02 192.168.88.123 cdh03
2.5 配置ssh免密登录
- 生成密钥对:ssh-keygen
- ssh-copy-id cdh01
- ssh-copy-id cdh02
- ssh-copy-id cdh03
2.6 安装jdk
2.7 关闭selinux 安全模块
- vim /etc/selinux/config (将SELINUX改为disabled)
- 重启所有节点,检查是否关闭getenforce
3.环境准备
3.1 私有网络软件仓库
- 在集群安装的过程中,要求每个节点都必须挂载光驱, 而对于每台节点都手动的去挂载光驱太麻烦,也不方便。这里使用每个节点都指向同一个私有网络镜像来解决这个问题。
我们的集群采用的是全离线安装,也不可能逐个节点的安装,同样是也使用指向同一个私有的网络软件包来解决
因此选择在cdh01上搭建一个私有的网络软件仓库,以下是搭建的全过程。
3.1.1 上传镜像
- 搭建私有网络镜像使用的镜像文件最好就使用安装系统的镜像,这里是选择了CentOS7x64的镜像,将其上传到cdh01的/disk下(需新建/disk目录)
3.1.2 挂载镜像
- mkdir -p /media/CentOS
- 挂载镜像:mount -o loop /disk/CentOS-7-x86_64.iso /media/CentOS/
- cd /etc/yum.repos.d
- mv CentOS-Base.repo CentOS-Base.repo.bak
- vi CentOS-Media.repo -> 将enable=0改成enable=1
- 清除yum的缓存:
yum clean metadata
yum clean dbcache - 查看是否挂载成功:yum list | wc -l
这是统计镜像中有多少个软件包的命令,CentOS7x64位的系统的软件包个数一般在3000以上
3.1.3 安装http(如果已经安装可以省略,但是需要启动,一b般最小化安装不会安装此服务)
- 检查是否安装:service httpd status
- 安装:yum install -y httpd
- 启动http服务,并让其开机自启:
service httpd start
chkconfig httpd on - 由于http的默认端口为80,通过浏览器访问:
192.168.88.121:80 - 创建网络软件仓库目录:mkdir –p /var/www/html
http默认将上面的目录作为软件仓库的目录
3.1.4 安装createrepo(如果已经安装省略)
- 该软件使用来生成http镜像的网络识别路径的:
yum install createrepo - 到此 私有的网络软件仓库搭建完成
3.2 挂载网络系统镜像
3.2.1 创建网络系统镜像
- 将从镜像中挂载的文件拷贝到软件仓库的目录中
cp -r /media/CentOS /var/www/html/ - 删除目录repodata
cd /var/www/html/CentOS
rm -rf ./repodata - 生成新的软件路径目录repodata
createrepo .
- 查看:192.168.88.121/CentOS
到此网络镜像创建成功。
3.2.2 使用网络系统镜像
-
解除对镜像文件的挂载:umount /media/CentOS
如上图 ,目录下无文件则说明解除挂载成功。
如果出现下图说明还有进程在使用/medis/CentOS挂载点,那么此时可以借助fuser命令找出占用目录/medis/CentOS的所有进程,然后kill掉,此时就可以umount 了
-
修改文件CentOS-Media.repo让其指向刚才创建的网络镜像
vi /etc/yum.repos.d/CentOS-Media.repo
修改:baseurl=http://192.168.88.121/CentOS/
scp -r /etc/yum.repos.d/CentOS-Media.repo cdh02:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/CentOS-Media.repo cdh03:/etc/yum.repos.d/ -
清除yum的缓存, 并查看软件包个数(参考3.1.2)
到此,cdh01网络系统镜像挂载完成,可以将镜像文件删除了。
3.3 创建CM和CDH网络软件镜像
3.3.1 创建CM网络软件镜像
-
CM下载地址(总地址)
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/
http://archive.cloudera.com/cm5/cm/5/
下载rmp仓库文件:
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/mirrors
分开下载RMP:http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-agent-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-daemons-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-server-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-server-db-2-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/enterprise-debuginfo-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/jdk-6u31-linux-amd64.rpm
-
通过xftp上传cm和CDH安装包到软件仓库目录中/var/www/html/(注意:相关的目录需要自己创建),目录结构如下
3.3.2 创建CDH网络镜像
- 下载地址:http://archive.cloudera.com/cdh5/parcels/5.12.1/
- 通过xftp上传cdh安装压缩包到软件仓库目录中(注意:相关的目录需要自己创建,三个文件一个也不能少)
- 不需要解压,到此cdh的网络软件镜像创建成功,也可以通过浏览器访问查看详情
3.3.3 子节点挂载网络镜像
- 将主节点的 /etc/ yum.repos.d下的CentOS-Media.repo文件分发到各子节点的目录/etc/ yum.repos.d下:
scp -r /etc/yum.repos.d/CentOS-Media.repo cdh02:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/CentOS-Media.repo cdh03:/etc/yum.repos.d/ - 在所有子节点执行如下命令:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak - 再清除yum的缓存,查看网络镜像软件包的个数(具体命令参考3.1.2)
- 到此,子节点网络镜像挂载完成。
3.3.4 关闭防火墙(所有节点)
- systemctl stop firewalld
systemctl disable firewalld
查看:systemctl status firewalld
3.3.5 增加开启自启项(所有节点)
- vi /etc/rc.local
添加
echo 0 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
swapoff -a
3.3.6 安装时钟服务ntp
- 时钟服务器安装在主节点上,子节点的时钟服服务全部同步到主节点的时钟服务器上。
3.3.6.1 主节点安装时钟服务器
- 安装时钟服务ntp: yum -y install ntp
- 启动,并注册到开机自启:
service ntpd start
chkconfig ntpd on - 查看ntpd的状态:service ntpd status
- 配置时钟服务器,vi /etc/ntp.conf
1.注释放开:表明时钟同步的网段
restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
2.server 0…server 1…server 2…server 3…注释掉
3.添加 表明服务器是跟自己同步
server 127.127.1.0
fudge 127.127.1.0 statum 10 - 重启ntp服务service ntpd restart
3.3.6.2 子节点安装时钟服务并同步到主节点
- ntp服务安装,参考3.4.61,主要的区别在于配置的修改上
- 配置时钟服务器,vi /etc/ntp.conf
1.注释放开:表明时钟同步的网段
restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
2.server 0…server 1…server 2…server 3…注释掉
3.添加 server cdh01 - 重启ntp服务service ntpd restart
- 时钟会自动同步的(需要一定的时间)。查看同步状态的命令:ntpstat
3.4 安装mysql
- 安装mysql的用处是提供cm存储集群信息以及hive的元数据库的。只需要安装一个mysql数据库即可,虽说mysql可以随意安装在集群的任意接节点,这里还是建议安装在cm。
安装mysql的过程如下:
3.4.1 安装
- yum -y install mysql-server
- 启动并开启开机启动:
service mysqld start
chkconfig mysqld on
3.4.2 修改root用户密码
- mysqladmin -u root password “root”
- 登录mysql:mysql -uroot -proot
3.4.3 创建相关数据库
3.4.3.1 Hive的元数据库
- create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3.4.3.2 Cloudera的元数据库
- create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3.4.4 开启远程访问
- 选择mysql库: use mysql;
- 修改访问权限表:grant all privileges on . to “root”@"%" identified by “root” with grant option;
- 刷新权限:flush privileges;
- 查看是否开启远程访问:select user,password,host from user;
上图的最后一行表示已经开启了root用的远程访问。 符号%表示所有主机。到此 mysql安装完毕。
4. CM安装
- 在3.3.1中我们只是建立了CM的网络软件镜像,但是我们并没有让系统识别,现在开始一步步安装CM
由于CM只要安装在主节点cdh01上,因此一下操作仅仅只在cdh01上执行。
4.1 配置CM的yum源
- 从CM网络镜像中拷贝cloudera-manager.repo
cp /var/www/html/cm5.12/cloudera-manager.repo /etc/yum.repos.d/ - cd /etc/yum.repos.d/
vi cloudera-manager.repo
baseurl=http://192.168.88.121/cm5.12/
gpgkey =http://192.168.88.121/cm5.12/RPM-GPG-KEY-cloudera
gpgcheck = 0 - 检查:yum repolist
- 备份:cp cloudera-manager.repo cloudera-cm.repo
4.2 安装CM
- 找到CM安装的引导文件:cloudera-manager-installer.bin
可从http://archive.cloudera.com/cm5/installer/5.12.1/下载,一定要对应你的CM的版本。将其上传到/opt下 - 赋予其执行权限:chmod 755 cloudera-manager-installer.bin
- 到此就可以开始安装CM了,执行命令:/opt/cloudera-manager-installer.bin
- 出现安装引导界面:->next->next->yes->next->yes就会开始安装jdk, 因此并不需要事先安装jdk->安装CM服务(有点慢, 耐心等待)->成功
- 我们可以通过命令查看cloudera的服务是否启动:
service cloudera-scm-server status - 访问:http://cdh01:7180
用户名密码均为admin,登录后进行cdh集群安装界面。到此CM安装完成。
5. CDH集群安装
5.1 选择子节点
- 在登录了后,进入的第一个界面是cloudera的最终用户许可条款和条件,勾选是的,再点继续,进入CDH版本选择界面,这里选择免费版, 再点击继续,进行感谢界面:直接点击继续,进入了节点选择界面:在这个界面我们需要填入,我们集群的所有节点主机名(可从任意节点的hosts文件中拷贝。),以英文逗号分隔,填完了后点击搜索:
5.2 CDH和CM的具体网络位置的选择
- 在确认主机无误后,点击继续,就可以进入CDH和CM的网络位置选择界面。
5.2.1 选择CDH的位置
- 先点击 更多选项,进入CDH网络位置选择界面,修改成我们自己的CDH网络软件镜像的地址:http://192.168.88.121/cdh/
5.2.2 选择CM的位置
- 在选择了CDH后,我们继续点击 自定义存储库 来选择我们自己的CM:其实呢,就是把配置cloudera-cm.repo(参考4.1)的配置拿出来,在界面上填一遍,我们的填写如下:
- 填写完成后,就会进入给每个节点安装cloudera-scm-agent的界面,再点击继续前,我们需要将hadoop-cm中安装CM时安装的JDK文件分发到每个子节点,不然子节点在安装cloudera-scm-agent会包错。
5.3 分发JDK
- 在hadoop-cm安装CM时,CM会将JDK安装到/usr/java/目录下,因此我们把hadoop-cm整个java目录分发给所有的子节点就好了,在hadoop-cm下执行:
scp -r /usr/java cdh02:/usr/
scp -r /usr/java cdh03:/usr/
5.4 Agent的安装和配置
- Jdk分发完成后,点击继续,进入jdk安装选项,由于我们已经分发,这个就不需要勾选,直接点击继续,进入选择是否启动单用户模式:这里选择不启用,直接点击继续,进入节点通信选择:我们这里使用 所有用户接收相同的密码,填入密码后,点击继续,进行agent安装界面, 耐心等待安装完成,分发为完成后,点击继续,进入agent主机检查: