运行环境配置(10.79.115.111-114)

1、关闭防火墙与selinux

关闭防火墙:

CentOS 7.x默认使用的是firewall作为防火墙。

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

关闭selinux

Redhat应用了SELinux去加强平安,永久封闭的举措为:

修改 /etc/selinux/config 文件中的 SELINUX=”” 为 disabled ,然后重启服务器。

重启后查看SELinux状态:执行getenforce命令

2、卸载centos7自带openjdk并安装oracle jdk

rpm -qa | grep java* 查看已安装列表

rpm -e --nodeps 软件名  卸载此软件及其依赖软件

然后在下载配置oracle jdk,我配置的JAVA_HOME=/opt/jdk1.8。

3、ssh免登陆

/usr/bin/ssh-keygen -t [rsa | dsa]

PS:如果直接执行/usr/bin/ssh-keygen ssh-keygen,那么默认采用rsa 生成公钥跟私钥。

这4台服务器依次执行 /usr/bin/ssh-keygen-t,然后将~/.ssh/id_rsa.pub生成的公钥添加到CentOS7-1的~/.ssh/authorized_keys文件,之后通过scp命令将CentOS7-1的authorized_keys文件发送到另外三台服务器。

如: scp  ~/.ssh/authorized_keys CentOS7-2:/~/.ssh/

4、主机映射

cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.79.115.111 CentOS7-1

10.79.115.112 CentOS7-2

10.79.115.113 CentOS7-3

10.79.115.114 CentOS7-4

5、在111-113安装配置zookeeper(基数台)

我将zookeeper装在/opt路径下(cd /opt):

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -P

mv zookeeper-3.4.6 zookeeper

cd zookeeper

cp conf/zoo_sample.cfg conf/zoo.cfg

#把zookeeper加入到环境变量

"PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile

source /etc/profile 使配置立即生效
Zookeeper集群配置:
注意:搭建zookeeper集群时,一定要先停止已经启动的zookeeper节点。

cat zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper/data
dataLogDir=/var/zookeeper/logs
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=10.79.115.111:2888:3888
server.2=10.79.115.112:2888:3888
server.3=10.79.115.113:2888:3888

#创建相关目录,三台节点都需要

mkdir -p /var/zookeeper/{logs,data}

#其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。

创建ServerID标识

除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir(/var/zookeeper/data)目录下。

这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

#在10.79.115.111服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下

echo "1" > /var/zookeeper/data/myid

#在10.79.115.112服务器上面创建myid文件,并设置值为2,同时与zoo.cfg文件里面的server.2保持一致,如下

echo "2" > /var/zookeeper/data/myid

#在10.79.115.113服务器上面创建myid文件,并设置值为3,同时与zoo.cfg文件里面的server.3保持一致,如下

echo "3" > /var/zookeeper/data/myid
到此,相关配置已完成
启动每个服务器上面的zookeeper节点

/opt/zookeeper/bin/zkServer.sh start
PS:Zookeeper一些常用命令:

在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作

  • 1. 启动ZK服务:       sh bin/zkServer.sh start
  • 2. 查看ZK服务状态: sh bin/zkServer.sh status
  • 3. 停止ZK服务:       sh bin/zkServer.sh stop
  • 4. 重启ZK服务:       sh bin/zkServer.sh restart

6、ntp时间同步

10.79.0.60(ntp服务端)已搭好,配置ntp客户端(111-114)

systemctl enable ntpd &&systemctl start ntpd(设ntpd服务开机自启并启动)

编辑/etc/ntp.conf文件,请参考(111-114服务器任意一台的/etc/ntp.conf文件)。

重启ntpd服务  #systemctl restart ntpd

启动后,查看同步情况

# ntpq -p

# ntpstat

因为是内网,一般ntpstat很快就可以同步上。

7、配置 /etc/security/limits.conf 文件。

末尾添加

* soft nproc 100240

* hard nproc 100240

* soft nofile 100240

* hard nofile 100240

其中,nofile - 打开文件的最大数目,nproc - 进程的最大数目。

可通过ulimit -n -u命令来查看。(修改完要重新ssh连接服务器才能看到效果)

安装Hadoop2.7.3+Spark2.10+hbase0.98:

Hadoop(M:master,S:slave,RM:ResourceManager),

在/hadoop/目录下

CentOS7-1(M)

CentOS7-2

CentOS7-3(S)

CentOS7-4(S)

Zookeeper

Zookeeper

Zookeeper

NameNode

NameNode

JournalNode

JournalNode

ZKFS

ZKFC

NodeMana..

NodeManager

RM

 

DataNode

DataNode

JObHistoryS

 

 

 

Hadoop分布式集群配置(按照上图进行配置)

首先配置HADOOP_HOME,在/etc/profile添加:

export HADOOP_HOME=/hadoop/hadoop-2.7.3

export PATH=$PATH:$HADOOP_HOME/bin

之后source /etc/profile使配置立即生效。

Hadoop的分布式安装过程非常简单,只需要将Hadoop安装包解压到指定的目录就可以了,接下来对Hadoop的主要配置文件进行配置。

将Hadoop安装包解压到/hadoop 目录下:

然后针对/hadoop/hadoop-2.7.3/etc/hadoop目录下几个主要文件进行配置: 
hadoop-env.sh、yarn-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves

1、配置hadoop-env.sh

编辑hadoop-env.sh,找到JAVA_HOME指定JDK的安装配置

$vi hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8

2、配置yarn-env.sh

编辑yarn-env.sh,找到JAVA_HOME指定JDK的安装配置

$vi yarn-env.sh

export JAVA_HOME=/opt/jdk1.8

3、配置core-site.xml

$vi core-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定hdfs的nameservice为cluster -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://cluster</value>

</property>

<!-- 指定zookeeper地址-->

<property>

<name>ha.zookeeper.quorum</name>

<value>CentOS7-1:2181,CentOS7-2:2181,CentOS7-3:2181</value>

</property>

<property>

<name>ha.zookeeper.session-timeout.ms</name>

<value>60000</value>

</property>

<!-- 故障检查时间 -->

<property>

<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

<value>60000</value>

</property>

<!-- ipc通讯超时时间 -->

<property>

<name>ipc.client.connect.timeout</name>

<value>20000</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>file:/hadoop/tmp</value>

</property>

</configuration>

fs.defaultFS:指定hdfs的nameservice为ns1

hadoop.tmp.dir:指定hadoop临时目录

ha.zookeeper.quorum:指定zookeeper地址

4、配置hdfs-site.xml

Hadoop中的HDFS配置,主要配置备份方式,及NameNode、DataNode、NameSecondary存储地址。 
$vi hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!--指定hdfs的nameservice为cluster,需要和core-site.xml中的保持一致 -->

<property>

<name>dfs.nameservices</name>

<value>cluster</value>

</property>

<!-- cluster下面有两个NameNode,分别是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.cluster</name>

<value>nn1,nn2</value>

</property>

<!-- nn1、nn2的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.cluster.nn1</name>

<value>CentOS7-1:9000</value>

</property>

<property>

<name>dfs.namenode.rpc-address.cluster.nn2</name>

<value>CentOS7-2:9000</value>

</property>

<!-- nn1、nn2的http通信地址 -->

<property>

<name>dfs.namenode.http-address.cluster.nn1</name>

<value>CentOS7-1:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.cluster.nn2</name>

<value>CentOS7-2:50070</value>

</property>

<property>

<name>dfs.namenode.servicerpc-address.cluster.nn1</name>

<value>CentOS7-1:53310</value>

</property>

<property>

<name>dfs.namenode.servicerpc-address.cluster.nn2</name>

<value>CentOS7-2:53310</value>

</property>

<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://CentOS7-3:8485;CentOS7-4:8485/cluster</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/hadoop/hdfs/journal/data</value>

</property>

<!-- 开启NameNode失败自动切换 -->

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->

<property>

<name>dfs.client.failover.proxy.provider.cluster</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

</value>

</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->

<property>

<name>dfs.ha.fencing.methods</name>

<value>

sshfence

shell(/bin/true)

</value>

</property>

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions.enable</name>

<value>false</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

<property>

<name>dfs.image.transfer.bandwidthPerSec</name>

<value>1048576</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/hadoop/hdfs/name</value>

</property>

<property>

<name>dfs.datanode.name.dir</name>

<value>file:/hadoop/hdfs/data</value>

</property>

<property>

<name>dfs.namenode.checkpoint.dir</name>

<value>file:/hadoop/hdfs/namesecondary</value>

</property>

</configuration>

dfs.nameservices: 指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致

dfs.ha.namenodes.ns1:ns1下面有两个NameNode,分别是nn1,nn2

dfs.namenode.rpc-address.ns1.nn1: nn1的RPC通信地址

dfs.namenode.http-address.ns1.nn1: nn1的http通信地址

dfs.namenode.shared.edits.dir:指定NameNode的元数据在JournalNode上的存放位置

dfs.journalnode.edits.dir : 指定JournalNode在本地磁盘存放数据的位置

dfs.ha.automatic-failover.enabled: true是开启NameNode失败自动切换

dfs.client.failover.proxy.provider.ns1:配置失败自动切换实现方式

dfs.ha.fencing.ssh.private-key-files:使用sshfence隔离机制时需要ssh免登陆

5、配置mapred-site.xml

Hadoop的MapReduce框架配置,配置MapReduce框架名称 
$vi mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<!-- configure historyserver -->

<property>

<name>mapreduce.jobhistory.address</name>

<value>CentOS7-1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>CentOS7-1:19888</value>

</property>

<property>

<name>mapred.job.reuse.jvm.num.tasks</name>

<value>-1</value>

</property>

<property>

<name>mapreduce.reduce.shuffle.parallelcopies</name>

<value>20</value>

</property>

</configuration>

6、配置yarn-site.xml

$vi yarn-site.xml

<?xml version="1.0"?>

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>CentOS7-1</value>

</property>

</configuration>

7、配置slaves节点列表

对于分布式安装,该文件中需要配置从节点机器名。

$vi slaves

CentOS7-3

CentOS7-4

到此,整个Hadoop伪分布式安装完毕,接下来就可以格式HDFS文件系统,并启动Hadoop系统。(将以上这些配置文件同步到其他所有服务器)

 

 

 

 

启动集群

1、启动zookeeper集群

2、启动journal node(在CentOS7-3CentOS7-4

./sbin/hadoop-daemon.sh start journalnode

执行jps命令,可以查看到JournalNode的Java进程pid;

3、格式化CentOS7-1 :HDFS(namenode)第一次要格式化(这里直接复制会有问题,最好手动输入)

./bin/hdfs namenode –format

 4、格式化zk(在CentOS7-1即可)(这里直接输入会有问题,最好手动输入)

./bin/hdfs zkfc –formatZK

格式成功后,在zookeeper中可以看到

[zk: localhost:2181(CONNECTED) 1] ls /hadoop-ha

[cluster]

 5、启动zkfc来监控NN状态(CentOS7-1,CentOS7-2

./sbin/hadoop-daemon.sh start zkfc

 6、启动HDFS(namenode)(在CentOS7-1即可)

./sbin/start-dfs.sh

#把NameNode的数据同步到CentOS7-2上(在CentOS7-2上执行)

$ hdfs namenode –bootstrapStandby  #启动mhadoop02上的namenode作为standby

./bin/hdfs zkfc –formatZK

$ sbin/hadoop-daemon.sh start namenode #在CentOS7-2启动namenode

 7、启动YARN

在CentOS7-1上执行如下命令

启动YARN(MR)(在CentOS7-1执行)

./sbin/start-yarn.sh

8、CentOS7-1上启动 JobHistoryServer

执行: ./sbin/mr-jobhistory-daemon.sh start historyserver

测试HA

正常启动后CentOS7-1的namenode与CentOS7-2的namenode状态截图如下:

此时在CentOS7-1上执行如下命令关闭namenode

$ sbin/hadoop-daemon.sh stop namenode

再次查看CentOS7-2上的namenode,发现自动切换为active了。
此时,高可用Hadoop分布式框架就搭好了。

http://10.79.115.111:19888/   JobHistory

http://10.79.115.111:8088/   All Applications

spark-2.1.0-bin-hadoop2.7(在/opt目录下)安装配置:

CentOS7-1

CentOS7-2

CentOS7-3

CentOS7-4

Master

 

Worker(s)

Worker(s)

在/etc/profile中加入如下变量:

export SCALA_HOME=/opt/scala-2.11.8

export PATH=$PATH:$SCALA_HOME/bin

export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7

export PATH="$SPARK_HOME/bin:$PATH"

source /etc/profile

 
1、首先安装scala-2.11.8 在/opt目录下

2、修改配置文件 

vim conf/spark-env.sh

在末尾加上:
export SCALA_HOME=/opt/scala-2.11.8

export JAVA_HOME=/opt/jdk1.8

export SPARK_MASTER_IP=CentOS7-1

export SPARK_WORKER_MEMORY=1g

export HADOOP_CONF_DIR=/hadoop/hadoop-2.7.3/etc/hadoop

vim conf/slaves:

CentOS7-3

CentOS7-4

PS:配置文件修改完成后, 将/usr/local/spark文件夹拷贝到其他节点对应的位置, 并配置好环境变量。

3、spark集群启动, 在主节点(CentOS7-1)中执行:

./sbin/start-all.sh

spark启动后, 通过http://10.79.115.111:8080/可以查看spark当前的运行状态。

 hbase-0.98.24-hadoop2(在/opt目录下)集群安装:

http://abloz.com/hbase/book.html(官方中文文档)

CentOS7-1

CentOS7-2

CentOS7-3

CentOS7-4

HMaster

HMaster备份

HRegionServ.

HRegionServer

在/etc/profile中加入如下变量:

export HBASE_HOME=/opt/hbase-0.98.24-hadoop2

export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

1、配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 

vim hbase-env.sh

export JAVA_HOME=/opt/jdk1.8

export HBASE_MANAGES_ZK=false //告诉hbase使用外部的zk

vim hbase-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定hbase在HDFS上存储的路径 -->

<property>

<name>hbase.rootdir</name>

<value>hdfs://10.79.115.111:9000/hbase</value>

</property>

<!-- 指定hbase是分布式的 -->

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<!-- 指定zk的地址,多个用“,”分割 -->

<property>

<name>hbase.zookeeper.quorum</name>

<value>CentOS7-1:2181,CentOS7-2:2181,CentOS7-3:2181</value>

</property>

</configuration>

vim regionservers

CentOS7-3

CentOS7-4

之后拷贝hbase到其他服务器

2、启动所有的hbase

在主节点上(CentOS7-1)运行:./start-hbase.sh

3、 通过浏览器访问hbase管理页面

http://10.79.115.111:60010

4、为保证集群的可靠性,要启动多个HMaster

在CentOS7-2运行:./start-hbase.sh

Hadoop2.7.3+spark2.1.0+hbase0.98分布式集群部署的更多相关文章

  1. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  2. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程

    超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...

  3. 超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群

    超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群 ps:本文的步骤已自实现过一遍,在正文部分避开了旧版教程在新版使用导致出错的内容,因此版本一致的情况下照搬执行基本不会有大错误. ...

  4. Hadoop2.X分布式集群部署

    本博文集群搭建没有实现Hadoop HA,详细文档在后续给出,本次只是先给出大概逻辑思路. (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 基于A ...

  5. 新闻实时分析系统-Hadoop2.X分布式集群部署

    (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 1.基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 2.基于 ...

  6. 新闻网大数据实时分析可视化系统项目——3、Hadoop2.X分布式集群部署

    (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 1.基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 2.基于 ...

  7. hadoop2.2.0的ha分布式集群搭建

    hadoop2.2.0 ha集群搭建 使用的文件如下:    jdk-6u45-linux-x64.bin    hadoop-2.2.0.x86_64.tar    zookeeper-3.4.5. ...

  8. Hadoop2学习记录(1) |HA完全分布式集群搭建

    准备 系统:CentOS 6或者RedHat 6(这里用的是64位操作) 软件:JDK 1.7.hadoop-2.3.0.native64位包(可以再csdn上下载,这里不提供了) 部署规划 192. ...

  9. nutch-2.2.1 hadoop-1.2.1 hbase-0.92.1 集群部署

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

随机推荐

  1. 数据库 proc编程三

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  2. imx6 uboot logo 更改

    最近需要更改im6 uboot的开机logo,使用10.1inch, 1024x600,18bit的LCD,期间遇到了很多的问题,记录于此. 参考链接 https://community.nxp.co ...

  3. 【BZOJ】1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(dp+被坑)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1609 首先我不得不说,我被这题坑了.题目前边没有说可以不需要3种牛都有啊!!!!!!!!然后我一直在 ...

  4. springframework resource

    文件资源操作     Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring ...

  5. python3----练习题(图片转字符画)

    import argparse from PIL import Image def parse_param(): parser = argparse.ArgumentParser() # 命令行输入参 ...

  6. 编程之美 set 17 拈游戏分析 (2)

    题目 有 N 块石头河两个玩家 A 和 B. A 先将石头分成若干堆, 然后按照 BABABA... 的顺序轮流取石块, 能将剩下的石头依次取光的玩家获胜. 每次取石头时, 每个玩家只能取一堆的 m( ...

  7. 编程之美 set 6 寻找最近点对

    这道题在算法课上当做例题讲过, 当时的印象也比较深 另有一道近似算法的题也在算法课上讲过, 并且印象更深, 复习的时候完全没管, 以为志在必得, 结果真考了那道近似算法, 我却没能打出来 为避免阴沟翻 ...

  8. 应用开发之Asp.net

    本章简言 上一章中笔者讲到关于Linq和EF的用法.并以hibernate来进行讲解.那么本章笔者来讲一下C#的Asp.Net.即是在B/S模式下开发.现在企业大部分的业务都是面向B/S模式的.所以对 ...

  9. post 与get

    GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改. POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据. 补充: PUT:PUT的英文含义是放置,也 ...

  10. jquery如何获取type=hidden的input元素的值?

    function setHiddenFields() { var hiddens = $("input:hidden"); $.each(hiddens, function (in ...