Hadoop 从入门到精通----leo学习编程不良人视频的笔记--part01
编程不良人原版笔记 — 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: JAVAHOME/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: JAVAHOME/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
- 配置文件
<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>
- 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相关推荐
- jwt实战详解--B站编程不良人视频笔记
文章目录 前言 一.什么是JWT 二.JWT能做什么 1.授权 2.信息交换 三.为什么使用JWT 四.JWT的结构是什么 五.使用JWT 1.引入依赖 2.生成token 3.根据令牌和签名解析数据 ...
- 从入门到精通:学习编程的必要步骤
学习编程对于新手是一条漫长的道路,但是很有意义.在技术飞速发展的现代社会,掌握一定的编程知识可以让你在职场和生活中更加具有竞争力.这篇文章将为初学者提供一个学习编程的必要步骤,希望能帮助你走上正确的道 ...
- Hadoop 从入门到精通----编程不良人笔记
编程不良人原版笔记 - https://blog.csdn.net/wei198621/article/details/111280555 part 01 hadoop 集群的搭建 – https:/ ...
- Java学习从入门到精通的学习建议
想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...
- java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...
今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...
- 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发
1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...
- 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密
1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...
- 每一个学习编程的人都应该有梦想
每一个学习编程的人都应该有一个梦想,一个改变世界的梦想: 每一个学习编程的人都应该有一个梦想,一个改变自己的梦想: 每一个学习编程的人都应该有一个梦想,一个快乐生活的梦想: 每一个学习编程的人都应该有 ...
- 【编程不良人】MongoDB最新实战教程学习笔记
简介 视频链接:01.简介和历史_哔哩哔哩_bilibili 文档地址: https://docs.mongodb.com/manual/ MongoDB教程:MongoDB 教程 | 菜鸟教程 注意 ...
最新文章
- c++向量和数组的区别_数学学习如此容易:用Python计算特征值和特征向量
- 【深入剖析Tomcat笔记】第一篇 基础知识储备
- python的set结构
- 《高性能JavaScript》第四章 算法和流程控制
- linux创建vnc服务器,五步建立一个VNC Linux服务器
- 2015.7.29 上学前在家的最后一晚
- 解决matplotlib中文显示问题
- caffe镜像︱window10+docker+ubuntu14.04+caffe镜像的简单尝试
- AtCoder Regular Contest 076E Coneected?
- 敏捷个人A1组第三次练习讨论 你是如何管理你的精力的?
- AT89C51单片机万年历仿真图+代码
- 关于TikTok环境伪装度检测,whoer和上网大师app的对比
- html图片闪烁设置,HTMLCSS基础-图片按钮闪烁解决方案
- ecshopnbsp;二次开发nbsp;全集
- 小黄的刷题之路(十六)——五行魔法(枚举/蛮力法)
- 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...
- 三国群英传霸业之王服务器维护,20200915维护公告
- 要事第一:最新的时间管理方法和实用的时间控制技巧
- linux ubuntu ping dig 域名解析相关
- am335x编写裸机程序并在CCS中用Jlink调试