1、环境要求
这里使用的hadoop包是源码编译过后的,可以支持压缩。若小伙伴的没有经过编译,在修改配置文件的时候要注意说明。
组件 | 版本 | 说明 |
---|---|---|
Centos7.2 2核4G | 3台虚拟机 | 自己先配置好3台虚拟机,互相ping通 |
Hadoop | Hadoop-2.6.0-cdh5.7.0.tar.gz | http://archive.cloudera.com/cdh5/cdh/5/ ,我使用的是源码编译过后的hadoop包 |
jdk | jdk-8u45-linux-x64.gz | https://pan.baidu.com/s/1NfOv2ODV9ktKXM8zfaofzQ 提取码:mgwr |
Zookeeper | zookeeper-3.4.6.tar.gz | https://pan.baidu.com/s/1NfOv2ODV9ktKXM8zfaofzQ 提取码:mgwr |
2、角色分配
主机 | NN | DN | RM | NM | JN | ZK | ZKFC |
---|---|---|---|---|---|---|---|
vm01 | √ | √ | √ | √ | √ | √ | √ |
vm02 | √ | √ | √ | √ | √ | √ | √ |
vm03 | √ | √ | √ | √ |
3、部署前准备
注意:3.1-3.7小节,3台机器都要操作
小技巧:CRT发送一条命令,同时操作多台机器
3.1 添加用户和相关目录
[root@vm01 ~]# useradd hadoop
[root@vm01 ~]# su - hadoop
[hadoop@vm01 ~]$ mkdir app soft source lib data maven_repo shell mysql
3.2 安装lrzsz并上传软件
#先安装上传下载的工具,rz上传,sz filename下载,下载的路径查看:CRT会话选项-x/y/Zmodem
[root@vm01 ~]# yum install -y lrzsz
[root@vm01 ~]# su - hadoop
[hadoop@vm01 ~]#$ cd soft
[hadoop@vm01 soft]$ rz
[hadoop@vm01 soft]$ ll
-rw-r--r--. 1 hadoop hadoop 42610549 Jul 9 20:33 hadoop-2.6.0-cdh5.7.0.tar.gz
-rw-r--r--. 1 hadoop hadoop 173271626 Jul 10 04:41 jdk-8u45-linux-x64.gz
-rw-r--r--. 1 hadoop hadoop 17699306 Jul 10 04:40 zookeeper-3.4.6.tar.gz
3.3 关闭防火墙
#清空防火墙规则
[root@vm01 ~]# iptables -F
[root@vm01 ~]# iptables -L
[root@vm01 ~]# systemctl stop firewalld
[root@vm01 ~]# systemctl disable firewalld
#永久关闭防火墙
[root@vm01 ~]# service iptables stop
[root@vm01 ~]# chkconfig iptables off
[root@vm01 ~]# service iptables status
3.4 配置hosts文件
[root@vm01 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.130 vm01
192.168.137.131 vm02
192.168.137.132 vm03
3.5 配置SSH免密通信
[root@vm01 ~]# su - hadoop
[hadoop@vm01 ~]$ rm -rf ./.ssh
[hadoop@vm01 ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa #生成秘钥
[hadoop@vm01 ~]$ cd .ssh
[hadoop@vm01 ~]$ ll
-rw-------. 1 hadoop hadoop 668 Jul 11 00:53 id_dsa
-rw-r--r--. 1 hadoop hadoop 601 Jul 11 00:53 id_dsa.pub
-rw-r--r--. 1 hadoop hadoop 546 Jul 11 01:01 known_hosts
#将vm02、vm03的秘钥复制到vm01目录
[hadoop@vm02 .ssh]$ scp -r ~/.ssh/id_dsa.pub root@vm01:/home/hadoop/.ssh/id_dsa.pub2
[hadoop@vm03 .ssh]$ scp -r ~/.ssh/id_dsa.pub root@vm01:/home/hadoop/.ssh/id_dsa.pub3
[hadoop@vm01 .ssh]$ cat id_dsa.pub >authorized_keys
[hadoop@vm01 .ssh]$ cat id_dsa.pub2 >>authorized_keys
[hadoop@vm01 .ssh]$ cat id_dsa.pub3 >>authorized_keys
[hadoop@vm01 .ssh]$ chmod 600 authorized_keys
[hadoop@vm01 .ssh]$ scp -r authorized_keys root@vm02:/home/hadoop/.ssh/
[hadoop@vm01 .ssh]$ scp -r authorized_keys root@vm03:/home/hadoop/.ssh/
//注意:scp文件到vm02,vm03,authorized_keys文件的归属用户和组都是root,所以要用root用户把该文件归属改成hadoop用户和组
[root@vm02 .ssh]$chown hadoop:hadoop authorized_keys
[root@vm03 .ssh]$chown hadoop:hadoop authorized_keys
#第一次ssh远程执行需要输入密码验证,之后就不需要了
#ssh 远程机器执行date命令,不需要输入密码,则ssh免密码配置成功
[hadoop@vm01 ~]$ ssh vm01 date
[hadoop@vm01 ~]$ ssh vm02 date
[hadoop@vm01 ~]$ ssh vm03 date
[hadoop@vm02 ~]$ ssh vm01 date
[hadoop@vm02 ~]$ ssh vm02 date
[hadoop@vm02 ~]$ ssh vm03 date
[hadoop@vm03 ~]$ ssh vm01 date
[hadoop@vm03 ~]$ ssh vm02 date
[hadoop@vm03 ~]$ ssh vm03 date
3.6 安装jdk
[root@vm01 ~]# mkdir /usr/java/
[root@vm01 ~]# tar -zxvf /home/hadoop/soft/jdk-8u45-linux-x64.gz -C /usr/java/
[root@vm01 ~]# chown -R root:root /usr/java
#配置环境变量,行尾追加
[root@vm01 ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
[root@vm01 ~]# source /etc/profile
[root@vm01 ~]# java -version
java version "1.8.0_45"
3.7 配置时钟同步
如果你的是阿里云主机,这一步略过
[root@vm01 ~]# yum -y install ntp
[root@vm01 ~]# chkconfig ntpd on && service ntpd start
[root@vm01 ~]# date
若date发现时间不一致,要等待片刻,可能虚拟机在跟互联网时间同步
4、部署ZooKeeper
4.1 解压、配置zk环境变量
[root@vm01 ~]$ su -hadoop
[hadoop@vm01 ~]$ tar -zxvf ~/soft/zookeeper-3.4.6.tar.gz -C ~/app/
#软连接,注意要写绝对路径 【ln -s 源文件 目标文件】
[hadoop@vm01 ~]$ ln -s ~/app/zookeeper-3.4.6 ~/app/zookeeper
#配置zk环境变量
[hadoop@vm01 ~]$ vim ~/.bash_profile
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
[hadoop@vm01 ~]$ source ~/.bash_profile
[hadoop@vm01 ~]$ which zkServer.sh
~/app/zookeeper/bin/zkServer.sh
4.2 修改zk配置文件
[hadoop@vm01 ~]$ mkdir ~/data/zkdata/data #3台机器都要做
[hadoop@vm01 ~]$ cd ~/app/zookeeper/conf/
[hadoop@vm01 conf]$ cp zoo_sample.cfg zoo.cfg
#修改配置文件
[hadoop@vm01 conf]$ vim zoo.cfg
dataDir=/home/hadoop/data/zkdata/data #修改路径
server.1=vm01:2888:3888 #行尾追加
server.2=vm02:2888:3888
server.3=vm03:2888:3888
#在数据目录创建myid文件,并将标识1传入
[hadoop@vm01 conf]$ cd ~/data/zkdata/data/
[hadoop@vm01 data]$ echo 1 >myid
#将配置文件复制一份到vm02、vm03
[hadoop@vm01 data]$ scp ~/app/zookeeper/conf/zoo.cfg vm02:~/app/zookeeper/conf/
[hadoop@vm01 data]$ scp ~/app/zookeeper/conf/zoo.cfg vm03:~/app/zookeeper/conf/
[hadoop@vm01 data]$ scp ~/data/zkdata/data/myid vm02:~/data/zkdata/data/
[hadoop@vm01 data]$ scp ~/data/zkdata/data/myid vm03:~/data/zkdata/data/
#更改vm02、vm03的myid文件的内容标识
[hadoop@vm02 ~]$ cat ~/data/zkdata/data/myid
2
[hadoop@vm03 ~]$ cat ~/data/zkdata/data/myid
3
4.3 启动zk集群
#三台机器都要启动
[hadoop@vm01 data]$ cd ~/app/zookeeper/bin
[hadoop@vm01 bin]$ ./zkServer.sh start
#第一次启动的时候,可能会提示not running,是因为zk可能在选举,等待片刻查看即可
[hadoop@vm01 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower #选举之后,这台是follower,还有一台leader
#QuorumPeerMain是zk的进程
[hadoop@vm01 bin]$ jps
44867 QuorumPeerMain
46985 Jps
5、部署hadoop集群
5.1 解压到app目录
三台机器都要操作
#我这里使用的是编译后的cdh-hadoop包,关注我博客:hadoop源码编译
[hadoop@vm01 target]$ pwd
/home/hadoop/source/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target
[hadoop@vm01 target]$ tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app/
[hadoop@vm01 app]$ cd ~/app/
[hadoop@vm01 app]$ ln -s ~/app/hadoop-2.6.0-cdh5.7.0 ~/app/hadoop
5.2 设置hadoop环境变量
三台机器都要做
[hadoop@vm01 app]$ vim ~/.bash_profile
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
[hadoop@vm01 app]$ source ~/.bash_profile
5.3 创建数据存放目录
三台机器都要做
[hadoop@vm01 ~]$ mkdir -p ~/app/hadoop-2.6.0-cdh5.7.0/tmp
[hadoop@vm01 ~]$ mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/name
[hadoop@vm01 ~]$ mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/data
[hadoop@vm01 ~]