编程不良人原版笔记 — https://blog.csdn.net/wei198621/article/details/111280555
part 01 hadoop 集群的搭建 – https://blog.csdn.net/wei198621/article/details/111167560
part 02 mapreduce 的学习 – https://blog.csdn.net/wei198621/article/details/111411463

相关笔记下载地址 ( 很少的费用 带来很多的收获 支持一下自己技术上的进步 支持一下陈兄 )
https://www.baizhiedu.xin/front/index#/main

Hadoop 从入门到精通----编程不良人 ( 25 小时 )
https://www.bilibili.com/video/BV17E411g7F2

java hdfs 操作hdfs库
https://github.com/wei198621/hdfs_by_baizhi

简介

hadoop 官网
http://hadoop.apache.org/

文档下载地址
https://hadoop.apache.org/docs/r2.10.1/
https://hadoop.apache.org/docs/r2.9.2/

配置项下载地址
core-site.xml
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

Hadoop 常用命令

hdfs 常用命令汇总


0.
0.1  查看所有hadoop指令
hdfs dfs
0.2  查看帮助文档
hdfs dfs -help **
hdfs dfs -help mkdir1. hdfs dfs -ls /xxx   查看指定文件夹下的文件2.hdfs dfs -put /xxx /xxx上传本地文件到hdfs
[root@hadoop5 tmpfile]# touch bb.txt
[root@hadoop5 tmpfile]# echo "1234567890" >> bb.txt
[root@hadoop5 tmpfile]# hdfs dfs -put bb.txt /
[root@hadoop5 tmpfile]# hdfs dfs -ls /3.hdfs dfs -cat /xxx/part-r-00000  查看hdfs文件
[root@hadoop5 tmpfile]# hdfs dfs -cat /bb.txt
12345678904. hdfs dfs -mkdir /xxx  创建文件夹
[root@hadoop5 tmpfile]# hdfs dfs -mkdir /dir02
[root@hadoop5 tmpfile]# hdfs dfs -ls /
-rw-r--r--   3 root supergroup         11 2020-12-18 15:26 /bb.txt
drwxr-xr-x   - root supergroup          0 2020-12-18 15:27 /dir02
.... 创建多级目录 -p 参数
[root@hadoop5 tmpfile]# hdfs dfs -mkdir -p /dir01/dir01015.  hdfs dfs -rm -r /dir01   删除文件(夹)
[root@hadoop5 tmpfile]# hdfs dfs -rm -r /dir016. hadoop fs -du -s -h  /xxx  查看某文件夹所占磁盘大小
[root@hadoop5 tmpfile]# hadoop fs -du -s -h /
28  /7. hdfs dfsadmin -report  查看集群节点分配内存大小

hdfs dfsadmin -report 示例展示

[root@hadoop5 tmpfile]# hdfs dfsadmin -report
Configured Capacity: 41901096960 (39.02 GB)
Present Capacity: 12390113280 (11.54 GB)
DFS Remaining: 12390031360 (11.54 GB)
DFS Used: 81920 (80 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0-------------------------------------------------
Live datanodes (4):Name: 192.168.213.205:50010 (hadoop5)
Hostname: hadoop5
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 6672506880 (6.21 GB)
DFS Remaining: 3802742784 (3.54 GB)
DFS Used%: 0.00%
DFS Remaining%: 36.30%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:48 CST 2020
Last Block Report: Fri Dec 18 15:29:06 CST 2020Name: 192.168.213.206:50010 (hadoop6)
Hostname: hadoop6
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 16384 (16 KB)
Non DFS Used: 7619432448 (7.10 GB)
DFS Remaining: 2855825408 (2.66 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.26%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:50 CST 2020
Last Block Report: Fri Dec 18 14:47:45 CST 2020Name: 192.168.213.207:50010 (hadoop7)
Hostname: hadoop7
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 7618867200 (7.10 GB)
DFS Remaining: 2856382464 (2.66 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.27%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:49 CST 2020
Last Block Report: Fri Dec 18 14:45:11 CST 2020Name: 192.168.213.208:50010 (hadoop8)
Hostname: hadoop8
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 16384 (16 KB)
Non DFS Used: 7600177152 (7.08 GB)
DFS Remaining: 2875080704 (2.68 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.45%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:50 CST 2020
Last Block Report: Fri Dec 18 14:17:20 CST 2020

Hadoop Shell命令 中文手册

hdfs dfs常用命令 博客
https://blog.csdn.net/hbin_csdn/article/details/102855404

Hadoop Shell命令 中文手册 (1.0.4 版本 )
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

hadoop的单机安装

简介

学习地址
https://www.bilibili.com/video/BV17E411g7F2?p=3


配置到了第六步 (20201216)

1 克隆一台主机命名hadoop1

(之前主机就是静态地址,最好)

2. 修改ip

vim /etc/sysconfig/network-scripts/ifcfg-ens33

ip : 192.168.121.201
systemctl restart network
ifconfig
ip a 看到地址已经变为 201

3. 修改 hostname , hosts 的映射 重启

hostname 查看主机名 当前为 localhost.localdomain
vim /etc/hostname 修改主机名为 hadoop1
vim /etc/hosts 192.168.121.201 hadoop1
reboot 重启


su root 以后的操作尽量用root
hostname 查看host是否修改过来了
ping hadoop1 如果能ping通说明 /etc/hosts 也改好了
java -version
echo $PATH

4. 上传hadoop

SecureCRT 登录 192.168.121.201 hadoop1 这台服务器
alt + p 文件传输
使用版本 hadoop 2.9.2 国内镜像地址
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/

secureCRT中sftp的使用


securecrt 按下ALT+P就开启新的会话 进行ftp操作。
输入:help命令,显示该FTP提供所有的命令
pwd: 查询linux主机所在目录(也就是远程主机目录)
lpwd: 查询本地目录(一般指windows上传文件的目录:我们可以通过查看”选项“下拉框中的”会话选项“,如图二:我们知道本地上传目录为:D:/我的文档)
ls: 查询连接到当前linux主机所在目录有哪些文件
lls: 查询当前本地上传目录有哪些文件
lcd: 改变本地上传目录的路径
cd: 改变远程上传目录
get: 将远程目录中文件下载到本地目录
put: 将本地目录中文件上传到远程主机(linux)put -r "d:\****"
quit: 断开FTP连接


将本地 d:\downloads 中Hadoop文件的放到 root 目录下
put -r “d:\Downloads\hadoop-2.9.2.tar.gz”
pwd
ls

切换到正常(非sftp状态)模式
tar -zxvf hadoop-2.9.2.tar.gz

查看目录

5. 上传 jdk1.8

阿里云 jdk-8u251-linux-x64.tar.gz 地址
https://code.aliyun.com/kar/oracle-jdk/raw/3c932f02aa11e79dc39e4a68f5b0483ec1d32abe/jdk-8u251-linux-x64.tar.gz

tar -zxvf 【压缩包文件名.tar.gz】 -C 【路径】/
tar -zxvf
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/java

修改 JAVA_HOME

vi /etc/profile

追加如下内容

export JAVA_HOME=/usr/java/jdk1.8.0_251
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAH​OME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAH​OME/lib/dt.jar:JAVA_HOME/lib/tools.jar

source /etc/profile

修改hdfs默认数据位置

step 1: 查看当前hdfs是否运行
jps

step2: 关闭hdfs
stop-dfs.sh
如果没有配置ssh登录,需要输入三次密码

step3: 进入hdfs目录,修改core-site.xml
vim /usr/hadoop-2.9.2/etc/hadoop/core-site.xml

— 增加下面的property

fs.defaultFS hdfs://hadoop1:9000 hadoop.tmp.dir /usr/hadoop-2.9.2/data

step4:格式化hdfs
hdfs namenode -format (仅仅是第一次使用需要格式化)

step5: 启动 hdfs
start-dfs.sh

step6 : 查看是否正常启动hdfs
[root@hadoop1 ~]# jps
19201 DataNode
19378 SecondaryNameNode
19060 NameNode
19493 Jps
[root@hadoop1 ~]#

配置SSH免密登录hadoop


1. 生成ssh秘钥对
ssh-keygen -t rsa 然后回车几次就可以啦2. 查看秘钥对生成位置
ls /root/.ssh 会发现在home目录中生成了两个文件id_rsa(私钥)  id_rsa.pub(公钥)3. 将公钥加入另一台机器的受信列表中
ssh-copy-id hadoop(主机名)
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (和上面命令一样,备用方法)4. 再次查看/root/.ssh 目录 多出两个文件其中authorized_keys就是存放公钥列表文件
authorized_keys  id_rsa  id_rsa.pub  known_hosts5. 检测是否配置成功ssh hadoop  不需要输入密码即可


以后再启动及关闭测试机器的hadoop就不需要每次都输入三次密码了

jps           查看
start-dfs.sh  启动
stop-dfs.sh   关闭

java 操作 Hdfs

  1. 配置文件
  <properties><hadoop.version>2.9.2</hadoop.version></properties><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!--<scope>test</scope>--></dependency></dependencies>
  1. java 代码

 @Testpublic void test() throws IOException {//hadoop文件系统的权限设置为root  ,不设置,使用默认的登录用户System.setProperty("HADOOP_USER_NAME","root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.213.201:9000");conf.set("dfs.replication","1");FileSystem fileSystem = FileSystem.get(conf);//  上传本地文件到 hadoop 服务器FileInputStream is = new FileInputStream("E:\\tempData\\20201217.txt");Path path = new Path("/now01.txt");FSDataOutputStream os = fileSystem.create(path);IOUtils.copyBytes(is,os,1024,true);//fileSystem.close();}

http://192.168.213.201:50070/explorer.html#/

// A code block
var foo = 'bar';

HDFS HA 集群搭建

(20201217)


10.15.0.5
10.15.0.6
10.15.0.7
10.15.0.81.  修改ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.15.0.52.  修改主机名
vim  /etc/hostname
hadoop5   3. 修改映射  (命令模式yyp 复制黏贴一行)
vim  /etc/hosts
10.15.0.5   hadoop5
10.15.0.6   hadoop6
10.15.0.7   hadoop7
10.15.0.8   hadoop84. 重启
reboot 5.  6,7,8  上面重复操作,然后就可以通过crt工具操作了6.配置免密登录 想在 5  上面操作  ,6,7,8
hadoop5   ssh-keygen -t rsa  -- 5上面生成秘钥
ssh-copy-id hadoop5         --  将秘钥 copy 到 5,6,7,8
ssh-copy-id hadoop6
ssh-copy-id hadoop7
ssh-copy-id hadoop8确认免密登录是否生效
ssh hadoop5
ssh hadoop6
ssh hadoop7
ssh hadoop87. 配置Hadoop集群
在5上面操作完成后同步到6,7,8 将 root 目录下的所有Hadoop2.9.2文件夹删除,保留之前的 hadoop2.9.2.tar.gz文件夹
tar -zxvf hadoop-2.9.2.tar.gz hadoop5 上面配置环境变量echo $JAVA_HOME vim /root/hadoop-2.9.2/etc/hadoop/hadoop-env.sh    java_home
vim /root/hadoop-2.9.2/etc/hadoop/core-site.xml    入口 1. fs.defaultFS   hdfs://hadoop5:9000 2  hadoop.tmp.dir    /root/hadoop-2.9.2/data  <property><name>fs.defaultFS</name><value>hdfs://hadoop5:9000</value></property><property><name>hadoop.tmp.dir</name><value>/root/hadoop-2.9.2/data</value></property>
vim /root/hadoop-2.9.2/etc/hadoop/hdfs-site.xml      省略。。。
vim /root/hadoop-2.9.2/etc/hadoop/slaves
hadoop5
hadoop6
hadoop7
hadoop8同步集群配置
将5上面配置好的 hadoop-2.9.2文件夹同步到 6,7,8 上面
scp -r 文件|目录名  root@hadoop6:/root/     scp -r /root/hadoop-2.9.2 root@hadoop6:/root/scp -r /root/hadoop-2.9.2 root@hadoop7:/root/scp -r /root/hadoop-2.9.2 root@hadoop8:/root/ 8.  5,6,7,8  重新加载 /etc/profile
source /etc/profile  9. hadoop5  启动集群在nodeNode的节点上执行格式化  hdfs  namenode -format start-dfs.sh jps <--如果没有执行  hdfs  namenode -format   ,jps 会发现  NameNode  没有启动 需要在5 执行      stop-dfs.sh    5.6.7.8 都执行下面的删除rm -rf  /root/hadoop-2.9.2/data  5 执行 start-dfs.sh  -->10 访问测试http://192.168.121.205:50070
http://hadoop5:50070[root@hadoop5 ~]# jps
10673 SecondaryNameNode
10420 DataNode
10906 Jps
10237 NameNode
[root@hadoop5 ~]# hdfs dfs -ls /
[root@hadoop5 ~]# hdfs dfs -put /etc/profile /profile.txt
[root@hadoop5 ~]# hdfs dfs -ls /
Found 1 items
-rw-r--r--   3 root supergroup       2034 2020-12-18 06:52 /profile.txt
[root@hadoop5 ~]#

六.HDFS完全分布式(简单版)


七.ZK搭建高可用HDFS集群

7.1 原理解析


QJM(Quorum Journal Manager)是Hadoop专门为Namenode共享存储开发的组件。其集群运行一组Journal Node,每个Journal 节点暴露一个简单的RPC接口,允许Namenode读取和写入数据,数据存放在Journal节点的本地磁盘。当Namenode写入edit log时,它向集群的所有Journal Node发送写入请求,当多数节点回复确认成功写入之后,edit log就认为是成功写入。例如有3个Journal Node,Namenode如果收到来自2个节点的确认消息,则认为写入成功。

而在故障自动转移的处理上,引入了监控Namenode状态的ZookeeperFailController(ZKFC)。ZKFC一般运行在Namenode的宿主机器上,与Zookeeper集群协作完成故障的自动转移。整个集群架构图如下

7.2 搭建HDFS高可用集群 01 配置ZK

# 0.集群规划 和 环境准备zk1       192.168.121.111 ---  zk2       192.168.121.112 ---zk3       192.168.121.113 ---hadoop12   192.168.121.212  --- datanode  & journalnode & namenode(active)  & DFSZKFailoverController(zkfc)hadoop13   192.168.121.213  --- datanode  & journalnode & namenode(standby) & DFSZKFailoverController(zkfc)hadoop14   192.168.121.214 ---  datanode  & journalnode环境准备: centos7.x 必须安装: yum install psmisc -y1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 /etc/hosts4.关闭防火墙5.ssh免登陆6.安装JDK,配置环境变量等 省略

1.修改Linux主机名

2.修改IP 六台都要修改

[leo@hadoop5 ~]$ su root   。。。。
[root@hadoop5 network-scripts]# ifconfig
[root@hadoop5 network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@hadoop5 network-scripts]# systemctl restart network
[root@hadoop5 network-scripts]# ifconfig

3.修改主机名和IP的映射关系 /etc/hosts

[root@zk1 ~]# scp /etc/hosts root@hadoop14:/etc/hosts

4.关闭防火墙 。。。

5.ssh免登陆
zk1 zk2 zk3 不要做免密登录
Hadoop12 ,Hadoop13,Hadoop14 需要做免密配置
克隆的镜像,不用做

[root@zk1 .ssh]# ll /root/.ssh/
total 24
-rw-------. 1 root root  788 Dec 18 06:19 authorized_keys
-rw-------. 1 root root 1679 Dec 18 06:18 id_rsa
-rw-r--r--. 1 root root  394 Dec 18 06:18 id_rsa.pub
-rw-r--r--. 1 root root 2014 Dec 18 20:00 known_hosts
-rw-------. 1 root root 1679 Dec 16 06:18 y
-rw-r--r--. 1 root root  394 Dec 16 06:18 y.pub

6.安装JDK,配置环境变量等 省略

[root@zk1 ~]# echo $PATH[root@zk1 ~]# vim /etc/profile

安装zk


1.  安装zksecureCRT   alt+ p  进入到上传页面 (本机不可执行)put -r "D:\files\OtherCode\编程不良人\编程不良人hadoop全套资料\hadoop全套资料\资料\zookeeper-3.4.12.tar.gz"  -- 中文路径不可以执行 put -r "D:\temp\zookeeper-3.4.12.tar.gz"       -- OK
2. [root@zk1 ~]# tar -zxvf /root/zookeeper-3.4.12.tar.gz
3. [root@zk1 ~]# mkdir /root/zkdata      ---zk1  zk2  zk3 都要执行

4.   创建zookeeper的表示文件myid  内容 分别为 1,2,3 [root@zk1 ~]# echo "1" >> /root/zkdata/myid   ---- 1,2,3  三个都要执行   myid 内容分别为   1,2,3  [root@zk1 ~]# vim /root/zkdata/myid 1
5.  创建zookeeper 配置文件  具体内容下一步放入并解释 [root@zk1 ~]# touch /root/zkdata/zoo.cfg   -- zoo.cfg ,zoo 是编程不良人老师自己起的 可以是任意值  [root@zk1 ~]# ll /root/zkdata/total 4-rw-r--r--. 1 root root 2 Dec 18 21:45 myid-rw-r--r--. 1 root root 0 Dec 18 21:49 zoo.cfg   

[root@zk1 ~]# vim /root/zkdata/zoo.cfg # zk1 配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=3001            -- 3001 zk与客户端通讯端口,
server.1=zk1:3002:3003      --- 3002  zk内部广播端口,3003 zk容错选举端口
server.2=zk2:4002:4003
server.3=zk3:5002:5003     # zk2 配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=4001             -- 4001 因为是多台机器, 3001 也可以,自行体会
server.1=zk1:3002:3003
server.2=zk2:4002:4003
server.3=zk3:5002:5003     # zk3 配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=5001
server.1=zk1:3002:3003
server.2=zk2:4002:4003
server.3=zk3:5002:5003                     
# 7.启动zk节点
[root@zk2 ~]# cd /root/zookeeper-3.4.12/bin
[root@zk2 bin]# ./zkServer.sh start /root/zkdata/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata/zoo.cfg
Starting zookeeper ... STARTED
[root@zk2 bin]#  ./zkServer.sh status /root/zkdata/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata/zoo.cfg
Mode: leader        ------------leader  follower
[root@zk2 bin]# jps
80358 Jps
79547 QuorumPeerMain----jps 查看进程
--- (进入zookeeper/bin目录) ./zkServer.sh status /root/zkdata/zoo.cfg   -- 查看启动状态

7.2 搭建HDFS高可用集群 02 配置hadoop及联调

# 0.集群规划 和 环境准备zk1       192.168.121.111 ---  zk2       192.168.121.112 ---zk3       192.168.121.113 ---hadoop12   192.168.121.212  --- datanode  & journalnode & namenode(active)  & DFSZKFailoverController(zkfc)hadoop13   192.168.121.213  --- datanode  & journalnode & namenode(standby) & DFSZKFailoverController(zkfc)hadoop14   192.168.121.214 ---  datanode  & journalnodehdfs ha 搭建步骤
1.  主机名 和 IP 映射   --- vim /etc/hosts  vim /etc/hostname
2. 配置环境变量       ---  vim /etc/profile
3. 配置ssH 免密登录12 上面  ssh-keygen -t rsa         --- 生成key             ssh  hadoop12 测试登录 需要输入密码 ssh-copy-id hadoop12     ---- copy key  到 本地  ssh  hadoop12 测试登录  无需输入密码  ssh-copy-id hadoop13    ---- 同上测试 ssh-copy-id hadoop14  ---- 同上测试 4. 安装依赖 yum install psmisc -y      -- 12 13  14  psmisc  组件用于 :  journal node 节点 在前一个active namenode 出错时候 ,登录此namenode ,将其kill掉
5. 12 13 14  中安装 hadoop 5.1 12上面 alt + p   put -r "D:\temp\hadoop-2.9.2.tar.gz" 5.2  12上面scp /root/hadoop-2.9.2.tar.gz root@hadoop13:/root scp /root/hadoop-2.9.2.tar.gz root@hadoop14:/root
6. 配置环境变量   vim /etc/profile      source /etc/profile    echo $PATH
7.修改Hadoop 中4个配置文件的配置  hadoop-env.shcore-site.xmlhdfs-site.xmlslaves 从12 同步以上4个文件到相应   13  14  scp -r /hadoop-2.9.2/etc/hadoop  root@hadoop13:/root/hadoop-2.9.2/etc/
8.  启动集群8.1   hdfs zkfs -formatZK  8.2   hadoop-daemon.sh start journalnode    ----3 8.3   hdfs namenode -format ns 8.4  start-dfs.sh8.5  hdfs namenode -bootstrapStandby   -------8.6  hadoop-daemon.sh start namenode 9.  测试hadoop12:50070hadoop13:50070
7.修改Hadoop 中4个配置文件的配置  7.1   vim /root/hadoop-2.9.2/etc/hadoop/hadoop-env.sh    --配置环境变量 echo $JAVA_HOME 7.2   vim /root/hadoop-2.9.2/etc/hadoop/core-site.xml  <!--hdfs主要入口不再是一个具体机器而是一个虚拟的名称 --><property><name>fs.defaultFS</name><value>hdfs://ns</value></property><property><name>hadoop.tmp.dir</name><value>/root/hadoop-2.9.2/data</value></property><property><name>ha.zookeeper.quorum</name><value>zk1:3001,zk2:4001,zk3:5001</value>   </property>7.3   vim /root/hadoop-2.9.2/etc/hadoop/hdfs-site.xmlJournalNode 默认端口号 8485
<configuration><!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>ns</value></property><!-- ns下面有两个NameNode,分别是nn1,nn2 --><property><name>dfs.ha.namenodes.ns</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.nn1</name><value>hadoop12:9000</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.ns.nn1</name><value>hadoop12:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.nn2</name><value>hadoop13:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.ns.nn2</name><value>hadoop13:50070</value></property><!-- 指定NameNode的元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><name>dfs.namenode.http-address.ns.nn1</name><value>hadoop12:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.nn2</name><value>hadoop13:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.ns.nn2</name><value>hadoop13:50070</value></property><!-- 指定NameNode的元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop12:8485;hadoop13:8485;hadoop14:8485/ns</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/root/journal</value></property><!-- 开启NameNode故障时自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失败自动切换实现方式 --><property><name>dfs.client.failover.proxy.provider.ns</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制,如果ssh是默认22端口,value直接写sshfence即可 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔离机制时需要ssh免登陆 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property></configuration>7.4    vim /root/hadoop-2.9.2/etc/hadoop/slaves hadoop12hadoop13hadoop147.4  同步集群配置  从12 同步以上4个文件到相应   13  14  scp -r /root/hadoop-2.9.2/etc/hadoop  root@hadoop13:/root/hadoop-2.9.2/etc/
[root@hadoop12 hadoop]# scp -r /root/hadoop-2.9.2/etc/hadoop/ root@hadoop13:/root/hadoop-2.9.2/etc     --- 进入 13 目录 查看 core-site.xml等文件是否修改
[root@hadoop12 hadoop]# scp -r /root/hadoop-2.9.2/etc/hadoop/ root@hadoop14:/root/hadoop-2.9.2/etc
8.  启动集群8.1   hdfs zkfc -formatZK    ---- 在 namenode节点的 12 或者 13 任意一台机器上面,执行如下格式化语句,进行格式化 zk (示例选用 12 )-----倒数6行提示   Successfully created /hadoop-ha/ns in ZK.   表示成功 在zk 上面创建 hadoop-ha/ns 节点 8.2  启动 journalnode 节点  (journal node 的作用是同步edits log ,需要在edits log 生成前启动  记录所有日志要先于datanode 启动)hadoop-daemon.sh start journalnode    ----12,13,14 上面都要启动[root@hadoop12 hadoop]# jps3757 Jps[root@hadoop12 hadoop]# hadoop-daemon.sh start journalnodestarting journalnode, logging to /root/hadoop-2.9.2/logs/hadoop-root-journalnode-hadoop12.out[root@hadoop12 hadoop]# jps      ---- 1.确认是否有journal服务4082 JournalNode4189 Jps[root@hadoop12 journal]# ls /root    --- 2. 确认journal 文件夹是否创建成功 此处生成的目录是 hdfs-site.xml 对journal 的配置 hadoop-2.9.2  hadoop-2.9.2.tar.gz  journal8.3   在 12 或者 13 中选一台作为active namenode 节点,执行格式化操作  hdfs namenode -format ns   在那台执行,哪台就是active ,另一条是standby ,本示例选择 12 作为 active 节点 。[root@hadoop12 journal]# hdfs namenode -format ns
在这里插入代码片

在这里插入代码片

    8.4  在active namenode 节点12 上面启动Namenode  start-dfs.sh[root@hadoop12 ns]# start-dfs.shStarting namenodes on [hadoop12 hadoop13]hadoop13: starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop13.outhadoop12: starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop12.outhadoop12: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop12.outhadoop14: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop14.outhadoop13: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop13.outStarting journal nodes [hadoop12 hadoop13 hadoop14]hadoop12: journalnode running as process 33402. Stop it first.hadoop13: journalnode running as process 33190. Stop it first.hadoop14: journalnode running as process 33546. Stop it first.Starting ZK Failover Controllers on NN hosts [hadoop12 hadoop13]hadoop13: starting zkfc, logging to /root/hadoop-2.9.2/logs/hadoop-root-zkfc-hadoop13.outhadoop12: starting zkfc, logging to /root/hadoop-2.9.2/logs/hadoop-root-zkfc-hadoop12.out

   8.5  在 standby namenody 节点 213 执行 hdfs namenode -bootstrapStandby   -------[root@hadoop13 ns]# hdfs namenode -bootstrapStandby
[root@hadoop13 ns]# jps
42913 DataNode
47187 Jps
33190 JournalNode
43274 DFSZKFailoverController
[root@hadoop13 ns]# 

 8.6  standby 节点 13 上面执行 如下语句单独启动namenode  hadoop-daemon.sh start namenode [root@hadoop13 ns]# jps42913 DataNode47187 Jps33190 JournalNode43274 DFSZKFailoverController[root@hadoop13 ns]# hadoop-daemon.sh start namenodestarting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenod-hadoop13.out[root@hadoop13 ns]# jps42913 DataNode49315 NameNode49475 Jps33190 JournalNode43274 DFSZKFailoverController[root@hadoop13 ns]#

9.  测试
http://hadoop12:50070  --- 配置本机host 后,可以用这个地址访问,暂时不可以
http://192.168.121.212:50070http://hadoop13:50070  --- 配置本机host 后,可以用这个地址访问,暂时不可以
http://192.168.121.213:50070

[root@hadoop12 ~]# hdfs dfs -put /etc/profile /profile
[root@hadoop12 ~]# hdfs dfs -ls /
Found 1 items
-rw-r--r--   3 root supergroup       2034 2020-12-19 06:14 /profile
[root@hadoop12 ~]#


将 212 active 节点宕机后

[root@hadoop12 ~]# jps
43890 DataNode
44420 DFSZKFailoverController
58853 Jps
33402 JournalNode
43722 NameNode
[root@hadoop12 ~]# kill 43722
[root@hadoop12 ~]# jps
59520 Jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
[root@hadoop12 ~]#

再次将之前宕机的212 namenode 启动
hadoop-daemon.sh start namenode

[root@hadoop12 ~]# jps
59520 Jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
[root@hadoop12 ~]# hadoop-daemon.sh start namenode
starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop12.out
[root@hadoop12 ~]# jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
60746 Jps
60623 NameNode
[root@hadoop12 ~]#


happy ending 20201219

Hadoop 从入门到精通----leo学习编程不良人视频的笔记--part01相关推荐

  1. jwt实战详解--B站编程不良人视频笔记

    文章目录 前言 一.什么是JWT 二.JWT能做什么 1.授权 2.信息交换 三.为什么使用JWT 四.JWT的结构是什么 五.使用JWT 1.引入依赖 2.生成token 3.根据令牌和签名解析数据 ...

  2. 从入门到精通:学习编程的必要步骤

    学习编程对于新手是一条漫长的道路,但是很有意义.在技术飞速发展的现代社会,掌握一定的编程知识可以让你在职场和生活中更加具有竞争力.这篇文章将为初学者提供一个学习编程的必要步骤,希望能帮助你走上正确的道 ...

  3. Hadoop 从入门到精通----编程不良人笔记

    编程不良人原版笔记 - https://blog.csdn.net/wei198621/article/details/111280555 part 01 hadoop 集群的搭建 – https:/ ...

  4. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  5. java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...

    今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...

  6. 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发

    1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...

  7. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

  8. 每一个学习编程的人都应该有梦想

    每一个学习编程的人都应该有一个梦想,一个改变世界的梦想: 每一个学习编程的人都应该有一个梦想,一个改变自己的梦想: 每一个学习编程的人都应该有一个梦想,一个快乐生活的梦想: 每一个学习编程的人都应该有 ...

  9. 【编程不良人】MongoDB最新实战教程学习笔记

    简介 视频链接:01.简介和历史_哔哩哔哩_bilibili 文档地址: https://docs.mongodb.com/manual/ MongoDB教程:MongoDB 教程 | 菜鸟教程 注意 ...

最新文章

  1. c++向量和数组的区别_数学学习如此容易:用Python计算特征值和特征向量
  2. 【深入剖析Tomcat笔记】第一篇 基础知识储备
  3. python的set结构
  4. 《高性能JavaScript》第四章 算法和流程控制
  5. linux创建vnc服务器,五步建立一个VNC Linux服务器
  6. 2015.7.29 上学前在家的最后一晚
  7. 解决matplotlib中文显示问题
  8. caffe镜像︱window10+docker+ubuntu14.04+caffe镜像的简单尝试
  9. AtCoder Regular Contest 076E Coneected?
  10. 敏捷个人A1组第三次练习讨论 你是如何管理你的精力的?
  11. AT89C51单片机万年历仿真图+代码
  12. 关于TikTok环境伪装度检测,whoer和上网大师app的对比
  13. html图片闪烁设置,HTMLCSS基础-图片按钮闪烁解决方案
  14. ecshopnbsp;二次开发nbsp;全集
  15. 小黄的刷题之路(十六)——五行魔法(枚举/蛮力法)
  16. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...
  17. 三国群英传霸业之王服务器维护,20200915维护公告
  18. 要事第一:最新的时间管理方法和实用的时间控制技巧
  19. linux ubuntu ping dig 域名解析相关
  20. am335x编写裸机程序并在CCS中用Jlink调试

热门文章

  1. 基于.NET6的简单三层管理系统
  2. 华为Java编码规范
  3. 对着Java性能调优,艿艿也很无奈···
  4. 如何在 Excel 中实现区间查找式的 VLOOKUP
  5. 【错误异常大全】:正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
  6. 坚持#第261天~DNS域名系统
  7. 微信小程序通过background或者background-image设置背景图片
  8. Vue—制作一个todoList
  9. Google天气预报API
  10. 回忆一年前的快乐时光