Hadoop学习笔记[2]-HDFS安装部署流程 1、必备软件
1-1 java(最好是1.8及其以上,but1.8以上只有open jdk了)
1-2 ssh软件,免密登录需要具体怎么配置网络上搜吧
直接在官网上搜就行了【https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 这里就有】,主要就是生成公钥和私钥,并将公钥分发给要免密登录的服务器,登录时,会拿着自己的私钥和对方的公钥进行匹配,匹配上就可以登录,等于是说对方有一把指纹锁,你把公钥给对方等于是在指纹锁中录入了自身的信息,等你拿着私钥登录对方时,等于在锁上录入指纹信息,如果匹配上,则表示可以开锁【即可以登录对方服务器】
2、hadoop.env文件配置JAVA_HOME变量
为啥?一般情况下我们在不是Java时都会在/etc/profile中配置JAVA_HOME,为什么还要再配置一次?主要是因为启动hdfs的时候,
使用的是ssh远程登录到别的服务器运行命令,但是ssh远程后无法取到/etc/profile中的环境变量,所以才需要在hadoop.env中进行配置,表示要同时告诉操作系统和hadoop本机的JAVA_HOME在哪
3、解压hadoop安装包到某个文件夹 4、单机版部署(伪分布式) 4-1 角色分类(伪分布式的所有角色都在同一台服务器)
1)、NameNode 主要是存储元数据2)、DataNode 存储文件的block块3)、secondaryNameNode周期合并fsimage(元数据全量快照)和edit_log(增量操作日志)生成新的fsimage返回给NameNode【减轻NameNode的压力 4-2 配置/etc/hadoop下的core-site.xml
fs.defaultFS hdfs://hdp001:9000
4-3 配置hdfs-site.xml
dfs.replication 1 dfs.namenode.name.dir /var/hadoop/hdfs/local/dfs/name dfs.datanode.data.dir /var/hadoop/hdfs/local/dfs/data dfs.namenode.secondary.http-address hdp001:50090 dfs.namenode.checkpoint.dir /var/hadoop/hdfs/local/dfs/namesecondary
4-4 配置slaves文件【dataNode的地址】
hdp001
4-5 在/sbin下使用start-dfs.sh启动hdfs【web:http://hdp001:50070】 5、分布式部署【一共四台虚拟机:hdp001,hdp002,hdp003,hdp004】 5-1 角色规划
| NN | SNN | DN | hdp001*hdp002**hdp003*hdp004*5-2 配置 core-site.xml
**不需要改配置,保持和之前一样即可
5-3 配置hdfs-site.xml
dfs.replication 2 dfs.namenode.name.dir /var/hadoop/hdfs/full/dfs/name dfs.datanode.data.dir /var/hadoop/hdfs/full/dfs/data dfs.namenode.secondary.http-address hdp002:50090 dfs.namenode.checkpoint.dir /var/hadoop/hdfs/full/dfs/namesecondary
5-4 配置slaves(HA模式的slaves文件和这个一样)
hdp002 hdp003 hdp004
6、分布式部署 HA模式【一共四台虚拟机:hdp001,hdp002,hdp003,hdp004】 6-1 角色规划
| NN | JN | DN | ZKFC | ZK | hdp001****hdp002*****hdp003***hdp004**6-2 配置core-site.xml
fs.defaultFS hdfs://mycluster ha.zookeeper.quorum hdp002:2181,hdp003:2181,hdp004:2181
6-3 配置hdfs-site.xml
dfs.nameservices mycluster dfs.ha.namenodes.mycluster hdp001,hdp002 dfs.namenode.rpc-address.mycluster.hdp001 hdp001:8020 dfs.namenode.rpc-address.mycluster.hdp002 hdp002:8020 dfs.namenode.http-address.mycluster.hdp001 hdp001:50070 dfs.namenode.http-address.mycluster.hdp002 hdp002:50070 dfs.namenode.shared.edits.dir qjournal://hdp001:8485;hdp002:8485;hdp003:8485/mycluster dfs.journalnode.edits.dir /var/hadoop/hdfs/ha/dfs/jn dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /home/hdp01/.ssh/id_rsa dfs.ha.automatic-failover.enabled true
6-4 实施流程
1)、 搭建zk2)、 启动JN hadoop-daemon.sh start journalnode3)、 选择一个NN进行格式化,hdfs namenode -format4)、 启动格式化的NN,hadoop-daemon.sh start namenode5)、 在另一台NN运行 hdfs namenode -bootstrapStandby6)、 格式化zk:hdfs zkfc -formatZK7)、 start-dfs.sh 6-5 可以自己测试一下HA模式下的故障转移
杀死hdp001的zkfc进程或者nn进程,其会将hdp002自动升级为主【kill -9 psid】