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 hadoop
2、验证hadoop用户是否成功,输入命令后,用户变成了hadoop表示成功
su hadoop
3、使用hadoop用户创建目录
su hadoop
mkdir -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、执行完上句执行下面语句,确定进入的路径正确
pwd
6、使用hadoop用户登陆各系统节点,执行如下命令查看上图创建目录是否成功
cd /home/hadoop/hadoop-2.3.0-cdh5.1.2/video-analysis-alg/
7、执行完上句执行下面语句,确定进入的路径正确
pwd
8、使用root用户为目录赋权
chmod o+rx -R /home/hadoop
三、服务器hostname配置
1、每一台服务器均需使用root用户执行下列命令,根据不同节点分配不同机器名,修改机器名相关配置。
hostnamectl set-hostname master1-vsp.com
2、Hostname配置完成之后,在每台机器使用root用户执行如下命令检查配置是否成功(以子节点2为例)
hostname
3、每一台服务器均需执行下列操作,修改系统的IP地址
ifconfig
4、使用root用户编辑eno
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
5、将下面的内容编辑到ifcfg-enp0s3文件中,原文件中有的则更改,没有的则添加,其中IP地址、子网掩码以及网关则需要更改实际情况编写。
NETMASK=255.255.255.0
IPADDR=172.16.100.4
GATEWAY=172.16.100.254
ONBOOT=yes(修改系统文件里面已有的)
BOOTPROTO=static(网卡内容存在此变量,将=号右边的内容改为此内容即可)
6、重启网卡
/etc/rc.d/init.d/network restart
7、每一台服务器均需执行下列5条操作命令,将服务器的IP与服务器名称进行关联。
echo 192.168.43.36 master1-vsp.com>> /etc/hosts
echo 192.168.43.34 slave1-vsp.com>> /etc/hosts
echo 192.168.43.35 slave2-vsp.com>> /etc/hosts
8、执行完成之后通过cat /etc/hosts命令查看是否执行成功。
cat /etc/hosts
9、重新启动计算机
reboot
四、配置系统参数(每台服务器都需要操作)
1、修改swappiness,建议将/proc/sys/vm/swappiness设置为0,默认值为60
sysctl vm.swappiness=0
echo vm.swappiness=0 >> /etc/sysctl.conf
2、执行如下命令以在重启后保存上条命令设置结果,该设置重启后不会丢失,执行如下命令:
cat >> /etc/sysctl.conf </sys/kernel/mm/transparent_hugepage/defrag
4、使用root用户执行如下命令可永久生效
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >>/etc/rc.local
5、执行下面命令验证上面的永久生效命令是否执行成功,
cat /etc/rc.local
6、关闭防火墙
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
7、关闭selinux 使用root用户执行如下命令:
setenforce 0
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
sed -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/html
3、建立临时web服务(只在master1-vsp.com服务器上执行该操作)
使用root用户执行service httpd status命令,如果出现Loaded: not-found (Reason: No such file or directory)相关字样则表示该操作系统没有http服务
service httpd status
4、以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.back
mv /etc/yum.repos.d/CentOS-Debuginfo.repo /etc/yum.repos.d/CentOS-Debuginfo.repo.back
mv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/CentOS-Media.repo.back
mv /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Vault.repo.back
8、再次执行ll /etc/yum.repos.d/命令查看一下原有的配置文件是否都已经更名了,如果没有则文件再次更名。
9、配置软件源(该步骤需要在每台机器上执行)
使用root用户执行echo命令,在/etc/yum.repos.d/目录创建名称为os.repo文件。
echo [base] >> /etc/yum.repos.d/os.repo
echo name=redhat-7.2 Base >> /etc/yum.repos.d/os.repo
echo baseurl = http://master1-vsp.com/redhat/>> /etc/yum.repos.d/os.repo
echo gpgcheck = 0 >> /etc/yum.repos.d/os.repo
10、通过cat /etc/yum.repos.d/os.repo命令查看文件是否正确创建并且正确写入了对应的文字
cat /etc/yum.repos.d/os.repo
使用root用户执行yum clean all命令清理软件源
yum clean all
11、安装Web服务器(只在master1-vsp.com服务器上执行该操作)
使用root用户执行yum install httpd命令安装http服务
yum install httpd
12、启动http服务(只在master1-vsp.com服务器上执行该操作)
ps -ef|grep python chkconfig httpd on
13、执行上面的命令后找到端口号为80,进程名称为SimpleHTTPServer的进程号,并执行kill命令,杀死该进程
kill -9 12280
14、使用root用户执行下面命令启动web服务器,并将之设置为自动启动。
systemctl start httpd
systemctl enable httpd.service
六、安装基础服务
1、建立root用户之间的互信,创建密钥(每台服务器都需要操作)
cd ~
ssh-keygen -t rsa
2、创建共享文件(只在master1-vsp.com服务器上执行该操作)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3、将共享文件复制到其他4台机器上
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
4、确认能够互相免密码登录(master1-vsp.com服务器上执行该操作)
使用root用户,通过ssh命令直接登录到其他4台服务器上。
ssh slave1-vsp.com
ssh slave2-vsp.com
5、配置服务器之间的时钟同步
使用root用户通过date命令查询该服务器的时区
date
如果不含CST字符,则将时区更改为正常的中国时区,用root用户执行ln命令
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
6、安装ntp服务(每台服务器都需要操作)
用root用户执行下面的命令,安装ntp服务。
yum install ntp
7、配置ntp服务(只在master1-vsp.com服务器上执行该操作)
使用root用户编辑/etc/ntp.conf文件
vi /etc/ntp.conf
8、注释掉网络服务器地址,并在其后添加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 chronyd
10、使用root用户执行下面的命令,启动ntp服务。
systemctl start ntpd.service
systemctl enable ntpd
11、使用root用户执行ntpdc -np命令,检查ntp状态
ntpdc -np
12、配置ntp客户机(在其他4台[非master1-vsp.com]服务器上执行该操作)
使用root用户编辑/etc/ntp.conf文件
vi /etc/ntp.conf
13、注释掉网络服务器地址,并在其后添加server 192.168.43.36 iburst。注192.168.0.36 为ntp服务器的ip地址。
14、使用root用户执行下面的命令,因为chronyd与ntpd冲突
systemctl disable chronyd
15、使用root用户执行下面的命令,启动ntp服务
systemctl start ntpd.service
systemctl enable ntpd
16、使用root用户执行ntpdc -np命令,检查ntp状态
ntpdc -np
使用命令手动同步一次时间
ntpdate -u master1-vsp.com
七、安装Mysql
1、检查mariadb数据,(只在master1-vsp.com服务器上执行该操作)
rpm -qa | grep mariadb
2、如果查询到数据,即下图所示,则通过rpm -e --nodeps mariadb-libs-5.5.44-2.el7.x86_64 命令卸载该数据库
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.x86_64
3、安装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-package
tar -xvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar
4、使用root用户执行下面的命令安装MySql-server数据库
rpm -ivh MySQL-server-5.5.44-1.linux2.6.x86_64.rpm
5、启动MySql-server服务
service mysql start
6、使用root用户执行下面的命令安装MySql-client数据库
rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm
7、使用root用户执行下面的命令检查MySql数据库的运行状态
service mysql status
使用root用户执行下面的命令设置MySql自启动
chkconfig mysql on
使用root用户执行下面的命令查看MySql服务,结果中2、3、4、5必须为开
chkconfig --list |grep mysql
8、修改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@admin
10、创建mysql数据库
执行下面的sql语句,创建4个数据库hive、scm和oozie 、sentry,创建用户hadoop并授权。密码默认为vsp@admin
create 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 java
2、系统中安装了其他版本的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 /softs
4、使用root用户将基础软件\jdk\下面的jdk-7u80-linux-x64.rpm文件上传到redhat操作系统/softs目录下,然后执行rpm -ivh jdk-7u80-linux-x64.rpm命令安装jdk。
rpm -ivh /softs/jdk-7u80-linux-x64.rpm
5、使用下面的命令查看刚刚安装的jdk目录
cd /usr/java/
ll
6、配置java系统环境变量,使用vi编辑器编辑/etc/profile文件,在该文件末尾添加下列表格内容
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JRE_HOME=/usr/java/jdk1.7.0_80/jre
export LD_LIBRARY_PATH=/usr/local/bin:/usr/local/lib:/usr/lib:/home/hadoop/hadoop-2.3.0-cdh5.1.2/lib/native
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$LD_LIBRARY_PATH:$PATH
7、使用source /etc/profile命令使得环境变量立即生效
source /etc/profile
8、使用java -version命令查询java版本
java -version
9、安装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 scm
12、通过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.ini
13、一条一条执行如下命令,即可以将agent同步到其他4台服务器上。
scp -r /opt/cm-5.7.0 [email protected]:/opt/
scp -r /opt/cm-5.7.0 [email protected]:/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-scm
chown 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-scm
chown cloudera-scm:cloudera-scm -R /opt/cm-5.7.0
16、使用root在所有节点机器上执行下面这条命令 !!!
chmod 777 -R /opt/cm-5.7.0
17、在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目录一般是根据主节点的分区情况填写
继续
完成