Hadoop安装部署
伪分布式
伪分布部署
-
操作系统环境
-
依赖软件ssh,jdk
-
安装JDK
-
rpm -i jdk-7u67-linux-x64.rpm
-
whereis java
- 查看安装路径
-
-
SSH
- ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
- cat id_dsa.pub >> authorized_keys
- ssh localhost
-
-
环境的配置
-
vi + /etc/profile
- export JAVA_HOME=/usr/java/jdk1.7.0_67
- export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
-
source /etc/profile
-
-
时间同步
-
hosts
- IP映射
-
hostname
- 主机名
-
-
创建目录
- mkdir -p /opt/sxt/
-
解压、环境配置
-
tar xf hadoop-2.6.5.tar.gz -C /opt/sxt/
-
vi + /etc/profile
- export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
- export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
-
配置文件修改(cd /hadoop/etc/hadoop/)
-
vi hadoop-env.sh
-
vi mapred-env.sh
-
vi yarn-env.sh
-
vi core-site.xml
fs.defaultFS
hdfs://localhost:9000
hadoop.tmp.dir
/var/sxt/hadoop/pseudo
-
vi hdfs-site.xml
dfs.replication
1
dfs.namenode.secondary.http-address
localhost:50090
-
vi slaves
- localhost
-
-
格式化hdfs
- hdfs namenode -format (只能格式化一次,再次启动集群不要执行)
-
启动集群
- start-dfs.sh
-
浏览器访问
- ss -nal
- http://1.1.1.1:50070
-
命令
-
hdfs
-
dfs
-
hdfs dfs
- [-appendToFile … ]
- [-cat [-ignoreCrc] …]
- [-checksum …]
- [-chgrp [-R] GROUP PATH…]
- [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
- [-chown [-R] [OWNER][:[GROUP]] PATH…]
- [-copyFromLocal [-f] [-p] [-l] … ]
- [-copyToLocal [-p] [-ignoreCrc] [-crc] … ]
- [-count [-q] [-h]
…] - [-cp [-f] [-p | -p[topax]] … ]
- [-createSnapshot []]
- [-deleteSnapshot ]
- [-df [-h] [
…]] - [-du [-s] [-h]
…] - [-expunge]
- [-get [-p] [-ignoreCrc] [-crc] … ]
- [-getfacl [-R]
] - [-getfattr [-R] {-n name | -d} [-e en]
] - [-getmerge [-nl] ]
- [-help [cmd …]]
- [-ls [-d] [-h] [-R] [
…]] - [-mkdir [-p]
…] - [-moveFromLocal … ]
- [-moveToLocal ]
- [-mv … ]
- [-put [-f] [-p] [-l] … ]
- [-renameSnapshot ]
- [-rm [-f] [-r|-R] [-skipTrash] …]
- [-rmdir [–ignore-fail-on-non-empty]
…] - [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>}
]|[–set <acl_spec> ]] - [-setfattr {-n name [-v value] | -x name}
] - [-setrep [-R] [-w]
…] - [-stat [format]
…] - [-tail [-f] ]
- [-test -[defsz]
] - [-text [-ignoreCrc] …]
- [-touchz
…] - [-usage [cmd …]]
-
-
-
实例
- hdfs dfs -mkdir -p /user/root
- hdfs dfs -ls -R /
- hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
-
全分布安装
全分布部署
-
操作系统环境
-
hostname
- 主机名
-
hosts
- IP映射
-
服务器设置
-
cat /etc/sysconfig/selinux
- SELINUX=disabled
-
-
时间同步
- date -s “2020-2-6 16:24:40”
-
JDK
-
安装JDK
-
rpm -i jdk-7u67-linux-x64.rpm
-
whereis java
- 查看安装路径
-
-
环境的配置
-
vi + /etc/profile
- export JAVA_HOME=/usr/java/jdk1.7.0_67
- export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
-
source /etc/profile
-
-
-
-
SSH
- ssh-keygen -t dsa
- ssh-copy-id ***
-
Hadoop配置文件
-
vi hadoop-env.sh
-
vi mapred-env.sh
-
vi yarn-env.sh
-
vi core-site.xml
fs.defaultFS
hdfs://node0001:9000
hadoop.tmp.dir
/var/sxt/hadoop/full
-
vi hdfs-site.xml
dfs.replication
3
dfs.namenode.secondary.http-address
node0002:50090
-
vi slaves
- node0002
- node0003
- node0004
-
-
存储小文件
- hdfs dfs -D dfs.blocksize=1048276 -put test.txt
高可用HA
Hadoop 2.0产生背景
-
Hadoop 1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题HDFS存在的问题(2个)
- NameNode单点故障,难以应用于在线场景 HA(high availability高可用)
- NameNode压力过大,且内存受限,影扩展性 F(federation联邦)
-
MapReduce存在的问题响系统
- JobTracker访问压力大,影响系统扩展性
- 难以支持除MapReduce之外的计算框架,比如Spark、Storm等
Hadoop 1.x与Hadoop 2.x
-
Hadoop 2.x由HDFS、MapReduce和YARN三个分支构成:
-
HDFS:NN Federation(联邦)、HA;
- 2.X:只支持2个节点HA,3.0实现了一主多从
-
MapReduce:运行在YARN上的MR;
- 离线计算,基于磁盘I/O计算
-
YARN:资源管理系统
-
HDFS 2.x
-
解决HDFS 1.0中单点故障和内存受限问题。
-
解决单点故障
- HDFS HA:通过主备NameNode解决
- 如果主NameNode发生故障,则切换到备NameNode上
-
解决内存受限问题
- HDFS Federation(联邦)
- 水平扩展,支持多个NameNode;
- (2)每个NameNode分管一部分目录;
- (1)所有NameNode共享所有DataNode存储资源
-
2.x仅是架构上发生了变化,使用方式不变
-
对HDFS使用者透明
-
HDFS 1.x中的命令和API仍可以使用
HDFS 2.x HA
-
主备NameNode
-
解决单点故障(属性,位置)
- 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
- 所有DataNode同时向两个NameNode汇报数据块信息(位置)
- JNN:集群(属性)
- standby:备,完成了edits.log文件的合并产生新的image,推送回ANN
-
两种切换选择
- 手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
- 自动切换:基于Zookeeper实现
-
基于Zookeeper自动切换方案
- ZooKeeper Failover Controller:监控NameNode健康状态,
- 并向Zookeeper注册NameNode
- NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active
联邦
HDFS 2.x Federation
- 通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。
- 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。
高可用搭建理论(未设置自动故障转移)
安装部署
-
环境
-
JDK
-
profile环境变量
- export JAVA_HOME=/usr/java/jdk1.7.0_67
PATH= P A T H : PATH: PATH:JAVA_HOME/bin
- export JAVA_HOME=/usr/java/jdk1.7.0_67
-
-
SSH免密
- NN需要分发公钥
-
-
hadoop
-
profile环境变量
- export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
- export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
-
vi hadoop-env.sh
-
vi mapred-env.sh
-
vi yarn-env.sh
-
hdfs-site.xml
dfs.replication
3
dfs.nameservices
mycluster
-
dfs.ha.namenodes.mycluster
nn1,nn2
-
dfs.namenode.rpc-address.mycluster.nn1
node0001:8020
dfs.namenode.rpc-address.mycluster.nn2
node0002:8020
-
dfs.namenode.http-address.mycluster.nn1
node0001:50070
dfs.namenode.http-address.mycluster.nn2
node0002:50070
-
dfs.namenode.shared.edits.dir
qjournal://node0001:8485;node0002:8485;node0003:8485/mycluster
-
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
/root/.ssh/id_rsa
-
dfs.journalnode.edits.dir
/var/sxt/hadoop/ha/journalnode
-
vi core-site.xml
fs.defaultFS
hdfs://mycluster
-
hadoop.tmp.dir
/var/sxt/hadoop/ha
-
vi slaves
- node0002
- node0003
- node0004
-
高可用搭建实操(自动故障转移)
高可用部署
-
hadoop
-
hdfs-site.xml
dfs.ha.automatic-failover.enabled
true
-
core-site.xml
ha.zookeeper.quorum
node0002:2181,node0003:2181,node0004:2181
-
-
zookeeper
-
profile环境变量
- export ZOOKEEPER_HOME=/opt/sxt/zookeeper-3.4.6
PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin
- export ZOOKEEPER_HOME=/opt/sxt/zookeeper-3.4.6
-
zoo.cfg
- dataDir=/var/sxt/zk
- server.1=node0002:2888:3888
server.2=node0003:2888:3888
server.3=node0004:2888:3888
-
echo 1 >/var/sxt/zk/myid
-
命令
- zkServer.sh start
- zkServer.sh status
-
-
首次启动
-
zkServer.sh start
-
hadoop-daemon.sh start journalnode
-
hdfs namenode -format
-
hadoop-daemon.sh start namenode
-
hdfs namenode -bootstrapStandby
-
hdfs zkfc -formatZK
-
验证
-
zkCli.sh
- ls /
-
ls /hadoop-ha/mycluster
-
get /hadoop-ha/mycluster/ActiveBreadCrumb
-
get /hadoop-ha/mycluster/ActiveStandbyElectorLock
-
hadoop-daemon.sh stop zkf
-
-
start-dfs.sh
-
ss -nal
-
-
之后启动
- zkServer.sh start
- start-dfs.sh