Hadoop是apache旗下的一套开源软件平台, 主要对海量数据进行分布式处理。
本次部署,计划使用5台服务器,服务器磁盘规划如下:
分区挂载完成以后,使用root用户执行对目录/data授权。每台服务器都执行此命令。
chmod 777 -R /data
一、基础运行平台部署包说明
平台大数据部署包共提供cm5,cdh,Redhat三个程序部署包。其中cm5为管理控制台,是必装包;cdh为基础运行平台的主程序包,是 必装包;Redhat为linux系统操作精装版。
二、创建组与用户(每台服务器都需要操作)
1、创建hadoop用户,并将hadoop用户添加到root组。在root用户下执行。useradd -g root hadoop[如果已存在用户更改用户属组:usermod -g root hadoop]passwd hadoop2、验证hadoop用户是否成功,输入命令后,用户变成了hadoop表示成功su hadoop3、使用hadoop用户创建目录su hadoopmkdir -p /home/hadoop/hadoop-2.3.0-cdh5.1.2/lib/native/mkdir -p /home/hadoop/hadoop-2.3.0-cdh5.1.2/video-analysis-alg/4、使用hadoop用户登陆各系统节点,执行如下命令查看上图创建目录是否成功cd /home/hadoop/hadoop-2.3.0-cdh5.1.2/lib/native/5、执行完上句执行下面语句,确定进入的路径正确pwd6、使用hadoop用户登陆各系统节点,执行如下命令查看上图创建目录是否成功cd /home/hadoop/hadoop-2.3.0-cdh5.1.2/video-analysis-alg/7、执行完上句执行下面语句,确定进入的路径正确pwd8、使用root用户为目录赋权chmod o+rx -R /home/hadoop
三、服务器hostname配置
1、每一台服务器均需使用root用户执行下列命令,根据不同节点分配不同机器名,修改机器名相关配置。hostnamectl set-hostname master1-vsp.com2、Hostname配置完成之后,在每台机器使用root用户执行如下命令检查配置是否成功(以子节点2为例)hostname3、每一台服务器均需执行下列操作,修改系统的IP地址ifconfig4、使用root用户编辑enovi /etc/sysconfig/network-scripts/ifcfg-enp0s35、将下面的内容编辑到ifcfg-enp0s3文件中,原文件中有的则更改,没有的则添加,其中IP地址、子网掩码以及网关则需要更改实际情况编写。NETMASK=255.255.255.0IPADDR=172.16.100.4GATEWAY=172.16.100.254ONBOOT=yes(修改系统文件里面已有的)BOOTPROTO=static(网卡内容存在此变量,将=号右边的内容改为此内容即可)6、重启网卡/etc/rc.d/init.d/network restart 7、每一台服务器均需执行下列5条操作命令,将服务器的IP与服务器名称进行关联。echo 192.168.43.36 master1-vsp.com>> /etc/hostsecho 192.168.43.34 slave1-vsp.com>> /etc/hostsecho 192.168.43.35 slave2-vsp.com>> /etc/hosts8、执行完成之后通过cat /etc/hosts命令查看是否执行成功。cat /etc/hosts9、重新启动计算机reboot
四、配置系统参数(每台服务器都需要操作)
1、修改swappiness,建议将/proc/sys/vm/swappiness设置为0,默认值为60sysctl vm.swappiness=0echo vm.swappiness=0 >> /etc/sysctl.conf2、执行如下命令以在重启后保存上条命令设置结果,该设置重启后不会丢失,执行如下命令:cat >> /etc/sysctl.conf <<EOFvm.swappiness = 10EOF3、修改transparent_hugepage,使用root用户执行以下命令可立即生效echo never >/sys/kernel/mm/transparent_hugepage/defrag4、使用root用户执行如下命令可永久生效echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >>/etc/rc.local 5、执行下面命令验证上面的永久生效命令是否执行成功,cat /etc/rc.local6、关闭防火墙#停止firewallsystemctl stop firewalld.service#禁止firewall开机启动systemctl disable firewalld.service #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)firewall-cmd --state7、关闭selinux 使用root用户执行如下命令:setenforce 0sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinuxsed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
五、安装软件源服务
1、上传文件(只在master1-vsp.com服务器上执行该操作)使用root用户登录到master1-vsp.com服务器上,并通过xftp工具将redhat(将系统镜像文件解压后里面的所有文件都拷贝到这里面)、CDH、cm5、mysql-package以及jdk文件夹上传到master1-vsp.com服务器的/var/www/html/目录下。 2、有可能/var/www/html/目录不存在,如果不存在请先创建该文件夹,创建文件件命令如下:mkdir -p /var/www/html3、建立临时web服务(只在master1-vsp.com服务器上执行该操作)使用root用户执行service httpd status命令,如果出现Loaded: not-found (Reason: No such file or directory)相关字样则表示该操作系统没有http服务service httpd status4、以root用户执行以下命令cd /var/www/html/python -m SimpleHTTPServer 80 &5、通过浏览器访问 http://192.168.43.36/地址,如果显示下面的界面,则表示已经建立了一个临时的web服务器。6、配置yum地址(该步骤需要在每台机器上执行)使用root用户执行ll /etc/yum.repos.d/命令,查看系统原有的软件源配置文件,ll /etc/yum.repos.d/7、通过mv命令将原有的配置文件进行重命名mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backmv /etc/yum.repos.d/CentOS-Debuginfo.repo /etc/yum.repos.d/CentOS-Debuginfo.repo.backmv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/CentOS-Media.repo.backmv /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Vault.repo.back8、再次执行ll /etc/yum.repos.d/命令查看一下原有的配置文件是否都已经更名了,如果没有则文件再次更名。9、配置软件源(该步骤需要在每台机器上执行)使用root用户执行echo命令,在/etc/yum.repos.d/目录创建名称为os.repo文件。echo [base] >> /etc/yum.repos.d/os.repoecho name=redhat-7.2 Base >> /etc/yum.repos.d/os.repoecho baseurl = http://master1-vsp.com/redhat/>> /etc/yum.repos.d/os.repoecho gpgcheck = 0 >> /etc/yum.repos.d/os.repo10、通过cat /etc/yum.repos.d/os.repo命令查看文件是否正确创建并且正确写入了对应的文字cat /etc/yum.repos.d/os.repo使用root用户执行yum clean all命令清理软件源yum clean all11、安装Web服务器(只在master1-vsp.com服务器上执行该操作)使用root用户执行yum install httpd命令安装http服务yum install httpd12、启动http服务(只在master1-vsp.com服务器上执行该操作)ps -ef|grep python chkconfig httpd on13、执行上面的命令后找到端口号为80,进程名称为SimpleHTTPServer的进程号,并执行kill命令,杀死该进程kill -9 1228014、使用root用户执行下面命令启动web服务器,并将之设置为自动启动。systemctl start httpd systemctl enable httpd.service
六、安装基础服务
1、建立root用户之间的互信,创建密钥(每台服务器都需要操作)cd ~ssh-keygen -t rsa2、创建共享文件(只在master1-vsp.com服务器上执行该操作)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys 3、将共享文件复制到其他4台机器上scp ~/.ssh/authorized_keys root@slave1-vsp.com:~/.ssh/scp ~/.ssh/authorized_keys root@slave2-vsp.com:~/.ssh/ 4、确认能够互相免密码登录(master1-vsp.com服务器上执行该操作)使用root用户,通过ssh命令直接登录到其他4台服务器上。ssh slave1-vsp.comssh slave2-vsp.com 5、配置服务器之间的时钟同步使用root用户通过date命令查询该服务器的时区date如果不含CST字符,则将时区更改为正常的中国时区,用root用户执行ln命令ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime6、安装ntp服务(每台服务器都需要操作) 用root用户执行下面的命令,安装ntp服务。yum install ntp7、配置ntp服务(只在master1-vsp.com服务器上执行该操作)使用root用户编辑/etc/ntp.conf文件vi /etc/ntp.conf8、注释掉网络服务器地址,并在其后添加server 127.127.1.0 iburst local clock;并且在#restrict的下一行添加restrict 0.0.0.0 mask 0.0.0.0 nomodify。9、使用root用户执行下面的命令,因为chronyd与ntpd冲突systemctl disable chronyd10、使用root用户执行下面的命令,启动ntp服务。systemctl start ntpd.service systemctl enable ntpd 11、使用root用户执行ntpdc -np命令,检查ntp状态ntpdc -np12、配置ntp客户机(在其他4台[非master1-vsp.com]服务器上执行该操作)使用root用户编辑/etc/ntp.conf文件vi /etc/ntp.conf13、注释掉网络服务器地址,并在其后添加server 192.168.43.36 iburst。注192.168.0.36 为ntp服务器的ip地址。14、使用root用户执行下面的命令,因为chronyd与ntpd冲突systemctl disable chronyd15、使用root用户执行下面的命令,启动ntp服务systemctl start ntpd.service systemctl enable ntpd16、使用root用户执行ntpdc -np命令,检查ntp状态ntpdc -np使用命令手动同步一次时间ntpdate -u master1-vsp.com
七、安装Mysql
1、检查mariadb数据,(只在master1-vsp.com服务器上执行该操作)rpm -qa | grep mariadb2、如果查询到数据,即下图所示,则通过rpm -e --nodeps mariadb-libs-5.5.44-2.el7.x86_64 命令卸载该数据库rpm -e --nodeps mariadb-libs-5.5.44-2.el7.x86_643、安装MySql数据库使用root用户通过tar -zxvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar命令解压MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar文件cd /var/www/html/mysql-packagetar -xvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar4、使用root用户执行下面的命令安装MySql-server数据库rpm -ivh MySQL-server-5.5.44-1.linux2.6.x86_64.rpm5、启动MySql-server服务service mysql start6、使用root用户执行下面的命令安装MySql-client数据库rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm7、使用root用户执行下面的命令检查MySql数据库的运行状态service mysql status使用root用户执行下面的命令设置MySql自启动chkconfig mysql on使用root用户执行下面的命令查看MySql服务,结果中2、3、4、5必须为开chkconfig --list |grep mysql8、修改root用户的密码,2条命令一起执行/usr/bin/mysqladmin -u root password 'vsp@admin'/usr/bin/mysqladmin -u root -h master1-vsp.com password 'vsp@admin'9、使用root用户登录mysql -u root -pvsp@admin10、创建mysql数据库执行下面的sql语句,创建4个数据库hive、scm和oozie 、sentry,创建用户hadoop并授权。密码默认为vsp@admincreate database hive default charset utf8 collate utf8_general_ci;create database scm default charset utf8 collate utf8_general_ci;create database sentry default charset utf8 collate utf8_general_ci;create database oozie default charset utf8 collate utf8_general_ci;CREATE USER 'hadoop'@'%' IDENTIFIED BY 'vsp@admin';CREATE USER 'hadoop'@'localhost' IDENTIFIED BY 'vsp@admin';GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'%' IDENTIFIED BY 'vsp@admin'; GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'localhost' IDENTIFIED BY 'vsp@admin';GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'master1-vsp.com' IDENTIFIED BY 'vsp@admin';grant all privileges on *.* to 'root'@'master1-vsp.com' identified by 'vsp@admin' with grant option;flush privileges;11、执行下面的sql语句,检查用户是否创建成功select user,host,password from mysql.user;
八、安装cm服务
1、卸载openjdk(每台服务器都需要操作)redhat操作系统可能会自带openjdk,在安装CM服务之前需要将其卸载。使用rpm -qa | grep java命令查看系统是否安装了openjdk。rpm -qa | grep java2、系统中安装了其他版本的jdk,此时通过命令rpm -e --nodeps packageName,将其他的jdk卸载。rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64 java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64 tzdata-java-2015g-1.el7.noarch javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 3、安装oracle jdk1.7(每台服务器都需要操作)使用root用户创建softs目录mkdir /softs4、使用root用户将基础软件\jdk\下面的jdk-7u80-linux-x64.rpm文件上传到redhat操作系统/softs目录下,然后执行rpm -ivh jdk-7u80-linux-x64.rpm命令安装jdk。rpm -ivh /softs/jdk-7u80-linux-x64.rpm5、使用下面的命令查看刚刚安装的jdk目录cd /usr/java/ll6、配置java系统环境变量,使用vi编辑器编辑/etc/profile文件,在该文件末尾添加下列表格内容export JAVA_HOME=/usr/java/jdk1.7.0_80export JRE_HOME=/usr/java/jdk1.7.0_80/jreexport LD_LIBRARY_PATH=/usr/local/bin:/usr/local/lib:/usr/lib:/home/hadoop/hadoop-2.3.0-cdh5.1.2/lib/nativeexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$LD_LIBRARY_PATH:$PATH 7、使用source /etc/profile命令使得环境变量立即生效source /etc/profile8、使用java -version命令查询java版本java -version9、安装cm服务(只在master1-vsp.com服务器上执行该操作)使用tar命令将文件进行解压 ,命令中的文件名是正确的,不要更改。tar -zxvf /var/www/html/cm5/cloudera-manager-centos7-cm5.7.0_x86_64.tar.gz -C /opt/chmod 777 -R /opt/cm-5.7.0 10、使用cp命令将mysql-connector-java-5.1.40-bin.jar文件复制到/opt/cm-5.7.0/share/cmf/lib/cp /var/www/html/cm5/mysql-connector-java-5.1.40-bin.jar /opt/cm-5.7.0/share/cmf/lib/chmod 777 /opt/cm-5.7.0/share/cmf/lib/mysql-connector-java-5.1.40-bin.jar 11、使用命令配置cm使用的元数据库,如果机器名、用户名密码不是按照本文前面部分规划,请根据实际情况修改/opt/cm-5.7.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hmaster1-vsp.com -uroot -pvsp@admin --scm-host master1-vsp.com scm scm scm12、通过vi命令修改/opt/cm-5.7.0/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名master1-vsp.com。vi /opt/cm-5.7.0/etc/cloudera-scm-agent/config.ini13、一条一条执行如下命令,即可以将agent同步到其他4台服务器上。scp -r /opt/cm-5.7.0 root@slave1-vsp.com:/opt/scp -r /opt/cm-5.7.0 root@slave2-vsp.com:/opt/14、在master1-vsp.com服务器上为server创建cloudera-scm用户useradd --system --home=/opt/cm-5.7.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scmchown cloudera-scm:cloudera-scm -R /opt/cm-5.7.0 15、在所有服务器上为agent创建cloudera-scm用户,不创建起不来agent,报unable to create the pidfile;useradd --system --home=/opt/cm-5.7.0/run/cloudera-scm-agent/ --create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scmchown cloudera-scm:cloudera-scm -R /opt/cm-5.7.0 16、使用root在所有节点机器上执行下面这条命令 !!!chmod 777 -R /opt/cm-5.7.017、在master1-vsp.com服务器上执行命令启动server以及agent服务/opt/cm-5.7.0/etc/init.d/cloudera-scm-server start/opt/cm-5.7.0/etc/init.d/cloudera-scm-agent start 18、在其他4台服务器上执行命令启动agent服务/opt/cm-5.7.0/etc/init.d/cloudera-scm-agent start
九、安装CDH5
1、打开浏览器并输入Cloudera Manager控制台地址,(如:http://master1-vsp.com:7180/)默认账号密码admin/admin1、
2、选择免费版本(cloudera express),继续
3、点击当前管理的主机,勾选集群中的所有的机器,选择继续
会弹出如下界面,点击使用parcel,再点击更多选项:
会弹出如下对话框:
点击右边的减号,全部删除
点击加号,添加parcel库,把以下一个库全部加入parcel,http://master1-vsp.com/CDH/5.7.0,如下图:
点击保存,会弹出如下界面,继续
4、选择自定义服务
选择HBase、HDFS、YARN(MR2 Included)以及ZooKeeper服务后点击继续
继续
Datanode目录,一般是根据子节点的分区情况填写;
Namenode目录一般是根据主节点的分区情况填写
继续
完成