文章目录
安装软件包
linux | CentOS-6.5-x86_64-minimal.iso |
---|---|
jdk | jdk-8u192-linux-x64.tar.gz |
hadoop | hadoop-2.6.0-cdh5.16.1.tar.gz |
zookeeper | zookeeper-3.4.5-cdh5.16.1.tar.gz |
hive | hive-1.1.0-cdh5.16.1.tar.gz |
hbase | hbase-1.2.0-cdh5.16.1.tar.gz |
sqoop | sqoop-1.4.6-cdh5.16.1.tar.gz |
flume | flume-ng-1.6.0-cdh5.16.1.tar.gz |
oozie | oozie-4.1.0-cdh5.16.1.tar.gz |
hue | hue-3.9.0-cdh5.16.1.tar.gz |
主机名及ip映射关系
hostname | ip |
---|---|
master | 192.168.93.7 |
slaver1 | 192.168.93.8 |
slaver2 | 192.168.93.9 |
Linux系统环境设置
- 关闭并禁用防火墙(开机不自启)
# service ntpd status
# service ntpd stop
# chkconfig iptables off
- 禁用selinux
# vi /etc/sysconfig/selinux
修改 selinux=disabled
- 设置文件打开数量和用户最大进程数(每台都要设置)
# vi /etc/security/limits.conf
- soft nofile 65535
- hard nofile 65535
- soft nproc 32000
- hard nproc 32000
- 配置阿里云yum源
# 安装wget,wget是linux最常用的下载命令(有些系统默认安装,可忽略)
yum -y install wget
#备份当前的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载阿里云的yum源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#清除原来文件缓存,构建新加入的repo结尾文件的缓存
yum clean all
yum makecache
- 设置自动更新时间
修改本地时区及ntp服务:
yum -y install ntp ntpdate
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/usr/sbin/ntpdate -u pool.ntp.org
或者同步阿里云的时间
ntpdate ntp1.aliyun.com
自动同步时间:
#设置定时任务,每10分钟同步一次,配置/etc/crontab文件,实现自动执行任务
#建议直接crontab -e 来写入定时任务即可。
*/10 * * * * /usr/sbin/ntpdate -u pool.ntp.org >/dev/null 2>&1
#重启定时任务
service crond restart
#查看日期
date
- 清除节点MAC地址
清除/etc/udev/rules.d/70-persistent-net.rules 文件,
这个文件记录了这台机器的MAC地址,虚拟机在第一次启动时候会在这个文件中自动生成MAC地址,
下面我们要克隆虚拟机,需要将这个文件删除,如果不删除,克隆出来的虚拟机也是这个MAC地址,
那么就会有冲突,导致新克隆的机器ip不可使用。
# cd /etc/udev/rules.d
# rm -rf 70-persistent-net.rules
-
保存快照
-
克隆虚拟机节点
-
给每台克隆的节点配置ip、主机名和映射关系
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
主要修改以下信息:
->ONBOOT=yes
->BOOTPROTO=static
->IPADDR=192.168.93.7
->NETMASK=255.255.255.0
->GATEWAY=192.168.93.2
->DNS1=114.114.114.114
->DNS2=8.8.8.8
永久性的设置主机名称:# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
配置IP映射关系:# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.93.7 master
192.168.93.8 slaver1
192.168.93.9 slaver2
重启虚拟机:# init 6
- Windows中的映射关系
C:\Windows\System32\drivers\etc\hosts:
192.168.93.7 master
192.168.93.8 slaver1
192.168.93.9 slaver2
- ssh免密登陆配置
在3台机器上都执行
# ssh-keygen -t rsa
然后三次回车,运行结束会在~/.ssh下生成两个新文件:
id_rsa.pub和id_rsa就是公钥和私钥
然后也是在3台机器上都执行:
# ssh-copy-id master;ssh-copy-id slaver1;ssh-copy-id slaver2
测试是否可以免密登录
[root@master~]# ssh slaver1
[root@slaver1~]#
创建存放目录
在opt目录下创建5个文件夹(用于整个集群中的文件及数据的存放):
# mkdir -p datas modules softwares tools test
# ls
datas modules softwares test tools
安装jdk8
# tar -zxvf jdk-8u192-linux-x64.tar.gz -C /opt/modules/java
将jdk添加到环境变量
# vi + /etc/profile
在末尾添加以下内容:
# JAVA_HOME
export JAVA_HOME=/opt/tools/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
使文件生效
# source /etc/profile
发送到其他节点
# scp -r java slave1:`pwd`
# scp -r java slave2:`pwd`
同样需要配置环境变量
安装zookeeper
- 进入master节点
1.解压
# tar -zxvf zookeeper-3.4.5-cdh5.16.1.tar -C /opt/modules/cdh/
# mv zookeeper-3.4.5-cdh5.16.1 zookeeper-3.4.5
2.修改zookeeper配置文件
# cd /opt/modules/cdh/zookeeper-3.4.5/conf/
# cp zoo_sample.cfg zoo.cfg
# vi + zoo.cfg
修改:
dataDir=/opt/datas/zookeeper/zkData
并在末尾加入:
server.1=master:2888:3888
server.2=slaver1:2888:3888
server.3=slaver2:2888:3888
3.在dataDir=/opt/datas/zookeeper/zkData目录下,新建myid文件(文件名必须是这个),输入1(这里的1与server.1是一一对应的)
# cd /opt/datas/zookeeper/zkData/
# vi myid
1
- 将zookeeper添加到环境变量中
# vi /etc/profile
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/modules/cdh/zookeeper-3.4.5
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
# source /etc/profile
- 将zookeeper分发到slaver1,slaver2,分别修改其myid文件值为2,3
# scp -r /opt/modules/cdh/zookeeper-3.4.5/ slaver1:`pwd`
# scp -r /opt/modules/cdh/zookeeper-3.4.5/ slaver2:`pwd`
# scp -r /opt/datas/zookeeper/zkData slaver1:`pwd`
# scp -r /opt/datas/zookeeper/zkData slaver2:`pwd`
- 启动3台zookeeper服务
# cd /opt/modules/cdh/zookeeper-3.4.5/
# zkServer.sh start //启动zookeeper
# zkServer.sh status //查看zookeeper的状态
# zkCli.sh //zookeeper客户端连接
- 开启zookeeper集群,可以看到一台主机是leader,其他2台主机是follower,则说明zookeeper集群搭建成功
安装hadoop
Hadoop HDFS高可用集群搭建(NameNode HA With QJM)
- 集群规划
hostname | NN-1 | NN-2 | DN | zookeeper | zkfc | journalnode |
---|---|---|---|---|---|---|
master | √ | √ | √ | √ | √ | |
slaver1 | √ | √ | √ | √ | √ | |
slaver2 | √ | √ | √ |
- 在master节点上,配置hadoop
解压:
# tar -zxvf hadoop-2.6.0-cdh5.16.1.tar.gz -C /opt/modules/cdh/
# mv hadoop-2.6.0-cdh5.16.1 hadoop-2.6.0
删掉doc文件夹,减少占用空间:
# cd /opt/modules/cdh/hadoop-2.6.0/share
# rm -rf doc/
- 将hadoop添加到环境变量中
# vi /etc/profile
#HADOOP_HOME
export HADOOP_HOME=/opt/modules/cdh/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source /etc/profile
进入到$HADOOP_HOME/etc/hadoop/目录下,修改以下文件
- hadoop-env.sh
export JAVA_HOME=/opt/tools/java/jdk1.8
- mapred-env.sh
export JAVA_HOME=/opt/tools/java/jdk1.8
- yarn-env.sh
export JAVA_HOME=/opt/tools/java/jdk1.8
- core-site.xml
<configuration>
<!-- 指定hdfs的nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/datas/hadoop/ha-hadoop</value>
</property>
<!-- 修改访问垃圾回收站用户名称,默认是dr.who,修改为当前用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slaver1:2181,slaver2:2181</value>
</property>
</configuration>
- hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 禁用权限 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!--指定hdfs的nameservice为mycluster,需要和core-site.x