文章目录

一,集群规划

二,虚拟机的配置

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
3. 在web端查看, 端口号为16010
12-15 03:39