hdfs (对应腾讯课堂视频15) hadoop安装
#rz
-rw-r--r-- 1 hadoop hadoop 197966159 6月 14 2019 hadoop-2.7.3.tar.gz
-rw-r--r-- 1 hadoop hadoop 27279 7月 9 2020 hadoop.zip
#分发
[hadoop@nn1 hadoop_base_op]$ sh scp_all.sh /tmp/upload/hadoop-2.7.3.tar.gz /tmp
#解压
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh tar -zxf /tmp/hadoop-2.7.3.tar.gz -C /usr/local/
#权限
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh chown -R hadoop:hadoop /usr/local/hadoop-2.7.3/
#软连接
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh ln -s /usr/local/hadoop-2.7.3/ /usr/local/hadoop
#770
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh chmod -R 770 /usr/local/hadoop-2.7.3/
#归属用户hadoop
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh chown -h hadoop:hadoop /usr/local/hadoop
#检查本地库支持情况
[hadoop@s3 ~]$ hadoop checknative
hdfs启动完整流程
#要上传hhdoop文件和hadoop配置文件,解压好hadoop以后,把配置文件替换
#分发配置文件
[hadoop@nn1 hadoop_base_op]$ sh scp_all.sh /tmp/upload/hadoop.zip /tmp
#删除原有的配置文件 删除这个文件夹
[hadoop@nn1 hadoop_base_op]$ sh ssh_all.sh rm -rf /usr/local/hadoop/etc/hadoop
#解压
[hadoop@nn1 hadoop_base_op]$ sh ssh_all.sh unzip -d /usr/local/hadoop/etc/ /tmp/hadoop.zip
#修改文件夹权限
[hadoop@nn1 hadoop_base_op]$ sh ssh_all.sh chmod -R 770 /usr/local/hadoop/etc/hadoop/
hadoop配置文件说明
//slaves 搭建集群这里需要修改
s1 s2 s3 三台机器名称
//core-site.xml
基本配置
//hadoop-env.sh
环境变量
//httpfs-site.xml
配置是否支持数据块追加
初始化分布式文件系统HDFS
**1)启动 zookeeper**
**2)启动 journalnode**
**3)启动zookeeper客户端,初始化HA的zookeeper信息**
**4)对nn1上的namenode进行格式化**
**5)启动nn1上的namenode**
**6)在nn2上 同步namenode**
**7)启动nn2上的namenode**
**8)启动ZKFC**
**9)启动datanode**
1.启动zookeeper
#查看zookeeper运行的状态
./ssh_all.sh /usr/local/zookeeper/bin/zkServer.sh status
#启动zookeeper
./ssh_all.sh /usr/local/zookeeper/bin/zkServer.sh start
2.启动jounalnode(同步两台namenode数据)
namenode:
fsimage :已经记录完成的元数据
edit_log:新写入
journalnode: 同步两台namenode数据
#启动
[hadoop@nn1 ~]$ sh hadoop-daemon.sh start journalnode
[hadoop@nn2 ~]$ sh hadoop-daemon.sh start journalnode
#初始化HA的zookeeper信息(第一次启动操作,以后不需要操作)
[hadoop@nn1 ~]$ hdfs zkfc -formatZK
#链接zookeeper
[hadoop@nn1 ~]$ zkCli.sh -server nn1.hadoop
#查看状态
[zk: nn1.hadoop(CONNECTED) 0] ls /
[zookeeper, hadoop-ha]
[zk: nn1.hadoop(CONNECTED) 2] ls /hadoop-ha
[zk: nn1.hadoop(CONNECTED) 7] quit
#格式化 #完成对fsimage的记录
#对nn1上的namenode进行格式化 (第一次启动前执行,以后不用每次启动都执行)
#初始化一些目录和文件。 #在nn1上执行 这个只在nn1上执行
[hadoop@nn1 ~]$ hadoop namenode -format #不要执行多了
[hadoop@nn1 current]$ cd /data/dfsname/current/ #格式化的这个目录
#启动nn1的namenode
[hadoop@nn1 ~]$ hadoop-daemon.sh start namenode
#观察nn1日志
vim /usr/local/hadoop/logs/hadoop-hadoop-namenode-nn1.hadoop.log
#第二个namenode同步第一个namenode状态(第一次启动前执行,以后不用每次都执行)
#在 nn2.hadoop 上运行
[hadoop@nn2 ~]$ hadoop namenode -bootstrapStandby
#nn2 跟随nn1的namenode
[hadoop@nn2 ~]$ hadoop-daemon.sh start namenode
#切换本地host 运行nn1.hadoop:50070 nn2.hadoop:50070即可访问
3.启动zkfc
两台namenode与zookeeper 保持链接用的一个进程
在那台机器起来的,那天机器就是active
#启动nn1的zkfc
[hadoop@nn1 ~]$ hadoop-daemon.sh start zkfc
#查看状态
[hadoop@nn1 ~]$ zkCli.sh -server nn1.hadoop
[zk: nn1.hadoop(CONNECTED) 0] ls /hadoop-ha/ns1
[ActiveBreadCrumb, ActiveStandbyElectorLock]
#启动nn2的zkfc
[hadoop@nn2 ~]$ hadoop-daemon.sh start zkfc
#关闭zkfc命令(让nn1作为active节点)
hadoop-daemon.sh stop zkfc
采坑
1.#######格式化[hadoop@nn1 ~]$ hadoop namenode -format 不能再两台机器执行
..#####主机的host要和linux的host匹配,否则映射不到
/etc/hosts
#本地大数据集群
192.168.92.30 nn1.hadoop
192.168.92.31 nn2.hadoop
192.168.92.32 s1.hadoop
192.168.92.33 s2.hadoop
192.168.92.34 s3.hadoop
# --------------------------------------------------
# 海牛集群
# 192.168.1.100 hadoop100
# 192.168.1.101 hadoop101
# 192.168.1.102 hadoop102
# 192.168.1.103 hadoop103
# 192.168.1.104 hadoop104
# 192.168.1.105 hadoop105
# 192.168.1.106 hadoop106
# 192.168.1.107 hadoop107
# 192.168.1.108 hadoop108
3.##########多次格式化namenode会导致datanode不出现
[hadoop@nn1 current]$ cd /data/dfsname/current
#把nn1上的集群id考别到s1-s3上面的clusid就可以了
启动DataNode
#查看哪台为active节点 查看日志
### 在标记为active的namenode节点上执行
#在web页面查看active节点 Overview 'nn1.hadoop:9000' (active)
#在标记为active的namenode节点上执行
[hadoop@nn1 ~]$ hadoop-daemons.sh start datanode
启动hdfs
#启动分布式文件系统HDFS
start-dfs.sh
#关闭hdfs
stop-dfs.sh
安装fuser
######在nn1和nn2上执行
#为了namenode高可用安装的, 自动切换
yum -y install psmisc
#为了nn1和nn2互相转换