文章目录
一,集群规划
二,虚拟机的配置
1. 修改主机名
临时修改
【pc1】
hostname hodoop01
【pc2】
hostname hodoop02
【pc3】
hostname hodoop03
永久修改
【pc1】
vi /etc/sysconfig/network
======================
NETWORKING=yes
HOSTNAME=hadoop01
【pc2】
vi /etc/sysconfig/network
======================
NETWORKING=yes
HOSTNAME=hadoop02
【pc3】
vi /etc/sysconfig/network
======================
NETWORKING=yes
HOSTNAME=hadoop03
2. hosts文件
配置主机映射【三台pc】
vi /etc/hosts
======================
192.168.91.101 hadoop01
192.168.91.102 hadoop02
192.168.91.103 hadoop03
3. 网络配置
【pc01】
vi /etc/sysconfig/network-scripts/ifcfg-eth0
============================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.91.101
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
【pc02】
vi /etc/sysconfig/network-scripts/ifcfg-eth0
============================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.91.102
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
【pc03】
vi /etc/sysconfig/network-scripts/ifcfg-eth0
============================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.91.103
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
4. 防火墙
关闭防火墙【三台pc】
service iptables stop
关闭防火墙开机自启【三台pc】
chkconfig iptables off
5. 设置SSH免密登陆
安装ssh【三台pc】
yum -y install openssh.x86_64
设置免密登陆【三台pc】
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
6. 时间同步
安装服务器【pc01】
yum -y install ntp.x86_64
配置时间同步服务器【pc01】
vi /etc/ntp.conf
================================================
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.91.0 mask 255.255.255.0 nomodify notrap ##添加网段
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool. ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0##先禁用4个自带的服务,添加server 127.127.1.0
启动时间服务器
service ntpd start
安装客户端【pc02,pc03】
yum -y install ntpdate.x96_64
同步时间
【pc02】
ntpdate hadoop01
【pc03】
ntpdate hadoop01
三,安装配置JDK
1.解压JDK安装包【三台pc】
tar -zxvf /data/jdk...gz -C /usr/local
2.配置环境变量【三台pc】
vi /etc/profile
==================
export JAVA_NOME=/opt/app/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin:
3.测试【三台pc】
java -version
===================
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
四,安装配置zookeeper
1.解压安装zookeeper【三台pc】
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/app/
2.配置zoo.cfg文件【三台pc】
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
=====================
dataDir=/opt/modules/zookeeper-3.4.5/zkData
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
3.创建zkData目录【三台pc】
mkdir zkData
在zkData目录下创建myid文件,编辑myid文件,内容就是此台server的zk的id号
【pc01】
vi zkData/myid
==============
1
【pc02】
vi zkData/myid
==============
2
【pc03】
vi zkData/myid
==============
3
4.启动三台zkServer【三台pc】
bin/zkServer.sh start ##启动服务
bin/zkServer.sh status ##查看状态
五,安装配置hadoop
1. 解压hadoop安装包【三台pc】
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/app/
2.配置环境文件【三台pc】
配置hadoop-env.sh
vi etc/hadoop/hadoop-env.sh
=================================
export JAVA_HOME=/opt/app/jdk1.8.0_181
配置mapred-env.sh
vi etc/hadoop/mapred-env.sh
=================================
export JAVA_HOME=/opt/app/jdk1.8.0_181
配置yarn-env.sh
vi etc/hadoop/yarn-env.sh
=================================
export JAVA_HOME=/opt/app/jdk1.8.0_181
3.配置核心文件【三台pc】
配置文件core-site.xml文件
vi etc/hadoop/hdfs-site.xml
======================
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 配置zookeeper -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.7.2/data/tmp</value>
</property>
</configuration>
配置文件hdfs-site.xml文件
vi etc/hadoop/hdfs-site.xml
======================
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop01:8020</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop02:8020</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/app/hadoop-2.7.2/journal</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行
sshfence:当Active出问题后,standby切换成Active,此时,原Active又没有停止服务,这种情况下会被强制杀死进程。
shell(/bin/true):NN Active和它的ZKFC一起挂了,没有人通知ZK,ZK长期没有接到通知,standby要切换,此时,standby调一个shell(脚本内容),这个脚本返回true则切换成功。
-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!-- 开启故障自动转移 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
配置文件mapred-site.xml文件
vi etc/hadoop/mapred-site.xm
======================
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
</configuration>
配置文件yarn-site.xml
vi etc/hadoop/yarn-site.xml
======================
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rmcluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop03</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
</property>
</configuration>
配置文件slaves文件
vi etc/hadoop/slaves
======================
hadoop01
hadoop02
hadoop03
六,启动集群
1.启动zookeeper【三台PC】
bin/zkServer.sh start
2.启动journalnode【三台PC】
sbin/hadoop-daemon.sh start journalnode
3.格式化hdfs【PC01】
bin/hdfs namenode -format ##格式化
sbin/hadoop-daemon.sh start namenode ##启动namenode
6.同步nn1的元数据信息【PC02】
bin/hdfs namenode -bootstrapStandby ##同步数据
sbin/hadoop-daemon.sh start namenode ##启动namenode
7.关掉所有进程
8.重新启动
重新启动zookeeper【三台PC】
bin/zkServer.sh start ##启动zk
初始化zkfc【PC01】
bin/hdfs zkfc -formatZK
启动hdfs【PC01】
sbin/start-dfs.sh ##启动hdfs
bin/hdfs haadmin -getServiceState nn1 #查看nn1状态
bin/hdfs haadmin -getServiceState nn2 #查看nn2状态
启动ResourceManagere【PC02】
sbin/start-yarn.sh
单独启动【PC03】
sbin/yarn-daemon.sh start resourcemanager
查看状态
bin/yarn rmadmin -getServiceState rm1 ##查看rm1的状态
bin/yarn rmadmin -getServiceState rm2 ##查看rm2的状态
七,安装hbase【三台PC】
1. 解压HBASE安装文件到安装路径下【三台PC】
sudo tar -zvxf hbase-1.3.1-bin.tar.gz -C /opt/app/
2. 修改权限为hadoop用户【三台PC】
sudo chown -R hadoop:hadoop hbase-1.3.1/
3. 配置HBASE的环境 $HBASE/conf/hvase-env.sh【三台PC】
vi $HBASE/conf/hvase-env.sh
======================================
// 修改JAVA_HOME
export JAVA_HOME=/opt/app/jdk1.8.0_181
// 关闭自带的zookeeper, 不需要HBASE自带的zookeeper
export HBASE_MANAGES_ZK=false
4. 配置HBASE-site.xml文件【三台PC】
vi hbase-site.xml
// 配置HBASE临时目录
<property >
<name>hbase.tmp.dir</name>
<value>/opt/app/hbase-1.3.1/hbase</value>
</property>
// 配置hbase 临时目录保存位置
<property >
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
//设置hbase的存储模式为分布式存储
<property >
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
//设置hbase中zookeeper 的信息,地址为自己配置的主机名称
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01,hadoop02,hadoop03</value>
</property>
5. 配置hbase在hdfs上的保存路径【三台PC】
cp core-site.xml /opt/app/hbase-1.3.1/conf/
cp hdfs-site.xml /opt/app/hbase-1.3.1/conf/
6. 配置regionservers 【三台PC】
该文件类似于 salves 文件,描述的是 regionserver的节点信息. 在配置过程中存在几个regionserver 就写几个主机名称
hadoop01
hadoop02
hadoop03
7. 修改 hbase中hadoop的jar包【三台PC】
由于hbase要操作hdfs,所以hbase需要hadoop的jar包支持。所以在hbase中配置环境中hadoop的jar包
8. 启动HBASE
1. 启动master服务【pc01】
bin/hbase-daemon.sh start master
2. 启动 regionserver 服务 在3个节点上启动【三台PC】
bin/hbase-daemon.sh start regionserver