开源大数据平台部署方案.docx
- 文档编号:9046608
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:85
- 大小:4.19MB
开源大数据平台部署方案.docx
《开源大数据平台部署方案.docx》由会员分享,可在线阅读,更多相关《开源大数据平台部署方案.docx(85页珍藏版)》请在冰豆网上搜索。
开源大数据平台部署方案
开源大数据平台部署方案
1.环境配置
主机地址
主机地址
用户名
密码
172.26.40.74
root
cloud4c
172.26.40.75
root
cloud4c
172.26.40.76
root
cloud4c
172.26.40.77
root
cloud4c
172.26.40.78
root
cloud4c
查看服务器硬件环境信息
查看CPU型号:
cat/proc/cpuinfo|grepname|cut-f2-d:
|uniq–c
查看物理CPU颗数:
cat/proc/cpuinfo|grepphysical|uniq–c
四颗一核的CPU
查看CPU运行模式:
getconfLONG_BIT
查看CPU是否支持64位:
cat/proc/cpuinfo|grepflags|grep'lm'|wc –l
结果大于0,说明支持64bit计算.lm指longmode,支持lm则是64bit
查看操作系统版本和内核
查看操作系统版本:
cat/etc/issue或者
lsb_release-a
查看内核信息:
关闭防火墙和SELinex
1.关闭防火墙:
serviceiptablesstop(临时关闭)
chkconfigiptablesoff(重启后生效)
2.关闭SELINUX,SELinux功能是一种强制存取控制的实现,能够进一步的增强Linux系统的安全性,但是开启此项功能会给初学者带来很多的不便,大多都关闭此项功能
●setenforce0(临时生效)
●修改/etc/selinux/config下的SELINUX=disabled(重启后永久生效)
所有主机时间同步
1.查看目前主机时间:
date
2.修改时间:
date-s00:
00:
00
3.时间同步(主机),将172.26.40.74的本地时钟作为时间供给源,这样,即便它失去网络连接,它也可以继续为网络提供服务
yuminstallntp
vi/etc/ntp.conf
server127.127.1.0
fudge127.127.1.0stratum10
4.重新启动服务
servicentpdstop
servicentpdstart
5.其他机器同步,等待大概五分钟,再到其他机上同步该机器时间(先确保时区一样,否则同步以后时间也是有时区差的)
ntpdate172.26.40.74
6.date查看时间是否同步完成
安装JDK
1.查看Linux自带的JDK是否已安装:
java–version
2.获得如下信息,表明有自带JDK需要卸载
3.查看jdk的信息:
rpm-qa|grepjava
4.卸载自带的jdk:
rpm-e--nodepsjava-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm-e--nodepsjava-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
5.解压安装新的OracleJDK,将jdk-7u79-linux-x64.tar.gz放在/usr/local目录下,解压
tar-zxvfjdk-7u79-linux-x64.tar.gz
6.配置环境变量
vi/etc/profile
exportJAVA_HOME=/usr/local/jdk1.7.0_79
exportPATH=$PATH:
$JAVA_HOME/bin:
exportCLASS_PATH=.:
%JAVA_HOME%/lib/dt.jar:
%JAVA_HOME%/lib/tools.jar
7.查看JDK是否配置成功
source/etc/profile
java–version
8.卸载自己安装的JDK方法
rpm-e--nodepsjdk-1.7.0_67(jdk-1.7.0_67为自己安装的JDK版本)
Maven安装
1.去maven官网下载maven的安装包,并上传。
2.解压缩maven的安装包
tar-zxvfapache-maven-3.3.9-bin.tar.gz
3.配置maven环境变量
vim.bash_profile
exportMAVEN_HOME=/home/hadoop/apache-maven-3.3.9
exportPATH=$PATH:
$MAVEN_HOME/bin
4.测试maven是否配置成功
配置主机名
1.在172.26.40.74执行如下命令
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Master1
执行如下命令查看主机名是否修改成功
servicenetworkrestart
hostname
2.在172.26.40.75执行如下命令
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Master2
3.在172.26.40.76执行如下命令
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Slave1
4.在172.26.40.77执行如下命令
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Slave2
5.在172.26.40.78执行如下命令
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Slave3
配置hosts映射
在所有节点添加如下配置:
vi/etc/hosts
172.26.40.74Master1
172.26.40.75Master2
172.26.40.76Slave1
172.26.40.77Slave2
172.26.40.78Slave3
新建hadoop用户
为所有节点新建一个hadoop用户
配置SSH免密码登录
配置主机之间hadoop用户的SSH免密码登录
1.在所有节点执行如下命令以生成秘钥:
ssh-keygen-trsa
2.进入.ssh/目录,并复制id_rsa.pub文件生成一个新的文件authorized_keys
3.验证每个节点自己的免密码登录是否成功
4.将其它节点的秘钥拷贝到Master1节点
ssh-copy-id-iMaster1
5.将Master1最终生成的密码拷贝到Master2、Slave1、Slave2、Slave3
6.测试节点之间免密码登录是否配置成功
2.安装Zookeeper
因为zookeeper有这样一个特性:
集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的,所以本次选择在Master1、Master2、Slave1、Slave2、Slave3上安装Zookeeper
1.在Master1上解压安装Zookeeper
tar-zxvfzookeeper-3.4.8.tar.gz
修改配置文件
2.修改配置文件zoo.cfg
cd/home/hadoopR/zookeeper-3.4.8/conf
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
dataDir=/home/hadoopR/tmp/zookeeper
dataLogDir=/home/hadoopR/tmp/zookeeper/datalog
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
server.1=Master1:
2888:
3888
server.2=Master2:
2888:
3888
server.3=Slave1:
2888:
3888
server.4=Slave2:
2888:
3888
server.5=Slave3:
2888:
3888
1)server.X用来配置ZooKeeper集群中的各节点,并建议X的值和myid保持一致。
2)端口2181用于监听客户端的连接,端口2888用于Leader监听Follower的连接,而3888则用于Leader选举。
3)dataDir用来指定快照文件存放目录,便于快速恢复;dataLogDir用来指定事务日志文件存放目录。
如果只指定了dataDir,而没指定dataLogDir,则事务日志文件也存放于dataDir指定的目录。
为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。
4)默认,autopurge的两个参数是被注释的。
“autopurge.purgeInterval”指定自动清理快照文件和事务日志文件的时间,单位为小时,默认为0表示不自动清理,这个时候可以使用脚本zkCleanup.sh手动清理。
不清理的结果是占用的磁盘空间越来越大。
“autopurge.snapRetainCount”用于指定保留快照文件和事务日志文件的个数,默认为3。
5)ticktickTime默认为2000,2-20倍的minSessionTimeout与maxSessionTimeout注:
tickTime心跳基本时间单位毫秒,ZK基本上所有的时间都是这个时间的整数倍。
3.修改/bin/zkEnv.sh
1)设置环境变量ZOO_LOG_DIR为zookeeper的日志存放目录,如:
exportZOO_LOG_DIR=/home/hadoopR/tmp/zookeeper/datalog
可将这一行放在ZOOKEEPER_PREFIX之后。
2)再修改下ZOO_LOG4J_PROP,以让日志不是输出到zookeeper.out,而是写入到日志文件,将:
ZOO_LOG4J_PROP="INFO,CONSOLE",改成:
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
4.修改conf/log4j.properties
log4j.appender.ROLLINGFILE.MaxFileSize=100MB
log4j.appender.ROLLINGFILE.MaxBackupIndex=10
设置每个日志文件大小为100M,滚动10个。
5.将Master1上配置好的Zookeeper安装文件拷贝到Master2、Slave1、Slave2、Slave3上
scp-r/home/hadoopR/zookeeper-3.4.8Master2:
/home/hadoopR/
scp-r/home/hadoopR/zookeeper-3.4.8Slave1:
/home/hadoopR/
scp-r/home/hadoopR/zookeeper-3.4.8Slave2:
/home/hadoopR/
scp-r/home/hadoopR/zookeeper-3.4.8Slave3:
/home/hadoopR/
设置myid
6.在Master1、Master2、Slave1、Slave2、Slave3上建立相应的dataDir目录,并写入myid文件
主机
myid文件内容
Master1
1
Master2
2
Slave1
3
Slave2
4
Slave3
5
启动Zookeeper集群
7.启动Zookeeper集群
8.查看Zookeeper集群状态
基本命令
9.进入ZooKeeper的命令行操作界面
bin/zkCli.sh-server172.26.40.74:
2181
参数“-server”中只含一个“-”,用以指定被连接的ZooKeeper节点,可以为Leader,也可以为Follower,“10.12.154.78”为Leader或Follower的IP或主机名,“2181”为ZooKeerp提供的客户端服务端口。
10.查看Zookeeper支持的命令列表
11.基本命令测试
3.安装Hadoop
NameNode(NN)HA实现方式
方案一:
将NN维护的元数据保存一份到NFS上,当NN故障,可以通过另一台NNe读取NFS目录中的元数据备份进行恢复工作,需要手动进行操作,并不是真正意义上的HA方案。
方案二:
准备一台备用NN节点,通过定期下载NN的元数据和日志文件来备份,当NN故障时,可以通过这台进行恢复,由于主备节点元数据和日志并不是实时同步,所以会丢失一些数据。
方案三:
前两种方案都不是很理想,社区提供一种更好的方案,基于QJM(QuromJournalManager)的共享日志方案。
QJM的基本原理是NN(Active)把日志写本地和2N+1(奇数)台JournalNode上,当数据操作返回成功时才写入日志,这个日志叫做editlog,而元数据存在fsimage文件中,NN(Standby)定期从JournalNode上读取editlog到本地。
在这手动切换的基础上又开发了基于Zookeeper的ZKFC(ZookeeperFailoverController)自动切换机制,Active和Standby节点各有ZKFC进程监控NN监控状况,定期发送心跳,当Active节点故障时Standby会自动切换为ActiveNode,我们这次就用的此方案,如下图所示。
ResourceManager(RM)HA实现方式
RM将状态信息存储在Zookeeper中,当Active故障,Standby切换为Active后,从ZK读取相应的作业信息,重新构建作业的内存信息,然后开始接受NodeManager心跳,并接受客户端提交作业的请求等。
Hadoop安装包下载
在安装Hadoop之前首先去Apache官网下载Hadoop安装包,如图所示:
http:
//archive.apache.org/dist/
hadoop在安装的时候,我们需要知道hadoop版本是32位还是64位。
hadoop官网本来提供的都是32位,因为我们大部分都是64位,所以不得不编译。
后来官网从hadoop2.5版本开始就提供了64位。
为了防止我们用错,我们需要在安装之前查看安装包是32位还是64位。
从官网下载的hadoop安装包hadoop是32位还是64位,我们查看本地库即可。
即进入$hadoop_home/lib/native,使用file命令。
解压之后,我们进入hadoop-2.7.2/lib/native,使用file命令:
filelibhadoop.so.1.0.0
修改配置文件
配置Hadoop主目录
修改hadoo-env.sh
vim/home/hadoopR/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
exportJAVA_HOME=/home/hadoopR/jdk1.8.0_60
修改core-site.xml
--指定hdfs的nameservice为ns1-->
//ns1
--指定hadoop临时目录-->
--指定zookeeper地址-->
2181,Master2:
2181,Slave1:
2181,Slave2:
2181,Slave3:
2181
修改hdfs-site.xml
--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->
--ns1下面有两个NameNode,分别是nn1,nn2-->
--nn1的RPC通信地址-->
9000
--nn1的http通信地址-->
50070
--nn2的RPC通信地址-->
9000
--nn2的http通信地址-->
50070
--指定NameNode的元数据在JournalNode上的存放位置-->
//Slave1:
8485;Slave2:
8485;Slave3:
8485/ns1
--指定JournalNode在本地磁盘存放数据的位置-->
--开启NameNode失败自动切换-->
--配置失败自动切换实现方式-->
--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
sshfence
shell(/bin/true)
--使用sshfence隔离机制时需要ssh免登陆-->
--配置sshfence隔离机制超时时间-->
多个NameNode之间共享数据,可以通过NnetworkFileSystem或者QuorumJournalNode。
前者是通过linux共享的文件系统,属于操作系统的配置;后者是hadoop自身的东西,属于软件的配置。
集群启动时,可以同时启动2个NameNode。
这些NameNode只有一个是active的,另一个属于standby状态。
active状态意味着提供服务,standby状态意味着处于休眠状态,只进行数据同步,时刻准备着提供服务,如图所示。
在一个典型的HA集群中,每个NameNode是一台独立的服务器。
在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。
其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换。
两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。
当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。
standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控editlog的变化,把变化应用于自己的命名空间。
standby可以确保在集群出错时,命名空间状态已经完全同步了,如图所示。
为了确保快速切换,standby状态的NameNode有必要知道集群中所有数据块的位置。
为了做到这点,所有的datanodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。
对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。
否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。
为了保证这点,JNs必须确保同一时刻只有一个NameNode可以向自己写数据。
修改mapred-site.xml
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开源大 数据 平台 部署 方案