Hadoop
1.:elephant:Hadoop集群配置
2.集群崩溃处理方案3.配置历史服务器4.配置日志聚集功能 2.HDFS的Shell相关操作(开发)
1.基础命令2.HDFS的API参数优先级3.JavaAPI操作HDFS编程
Hadoop#基本命令 scp基本语法: 发送:scp -r 要拷贝的文件 用户@主机:路径/ 拖过来:scp -r 用户@主机名:路径(文件名) 拖哪里(路径/) 在2将1的文件传给3:scp -r 用户@1:路径(文件名) 用户@3:路径/ rsync基础语法: rsync -av 要同步的文件(夹) 用户@主机:路径/ ssh基础语法: [student@hadoop102 .ssh]$ ssh-keygen -t rsa --生成公私密钥 [student@hadoop102 .ssh]$ ssh-copy-id hadoop103 --发送私钥给103 单独启动HDFS组件 hdfs --daemon start/stop namenode/datanode/secondarynamenode 启动/停止YARN yarn --daemon start/stop resourcemanager/nodemanager
一、常用端口号 hadoop3.x HDFS NameNode 内部常用端口号:8020/9000/9820 HDFS NameNode 对用户的查询端口:9870 Yarn查看任务运行情况端口号:8088 历史服务器:19888 hadoop2.x HDFS NameNode 内部常用端口:8020/9000 HDFS NameNode 对用户的查询端口:50070 Yarn查看任务运行情况端口号:8088 历史服务器:19888 二、常用的配置文件 3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers 2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml slaves1.Hadoop集群配置
2.集群崩溃处理方案1.集群部署规划
hadoop-3.1.3、Centos7NameNode 和 SecondaryNameNode 不要安装在同一个服务器ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上
hadoop102 hadoop103 hadoop104 HDFS NameNode
DataNode
DataNodeSecondaryNameNode
DataNodeYARN
NodeManagerResourceManager
NodeManager
NodeManage2.四个配置文件
core-site.xml
fs.defaultFS hdfs://hadoop102:8020 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data hdfs-site.xml
dfs.namenode.http-address hadoop102:9870 dfs.namenode.secondary.http-address hadoop104:9868 yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME mapred-site.xml
mapreduce.framework.name yarn 4.配置workers (此文件不能有空格、回车等多余)
主机名1(hadoop102) 主机名2(hadoop103) 主机名3(hadoop104)4.然后三台主机同步配置文件内容
[student@hadoop102 hadoop-3.1.3]$ xsync hadoop/ xsync文件内容(此文件存放于操作用户的~/bin中,并附加x执行权限) #!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in hadoop102 hadoop103 hadoop104 do echo ==================== $host ==================== #3. 遍历所有目录,挨个发送 for file in $@ do #4. 判断文件是否存在 if [ -e $file ] then #5. 获取父目录 pdir=$(cd -P $(dirname $file);pwd) #6. 获取当前文件的名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$name $host:$pdir else echo $file does not exists! fi done done5.初始化集群
[student@hadoop102 hadoop-3.1.3]$ hdfs namenode -format6.启动集群
[student@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh7.启动yarn
注意 yarn 在hadoop103机器上启动
[student@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh7.对比节点是否与一开始(上面)集群规划任务节点相同(HDFS)
访问Web端
http://hadoop102:9870 --HDFS的NameNode,可查看HDFS上存储的数据信息 http://hadoop103:8088 --ResourceManager,可查看YARN上运行的Job信息
3.配置历史服务器1.停掉所有节点
2.删除所有机器上的 data logs
3.主节点重新格式化
4.配置日志聚集功能mapred-site.xml
mapreduce.jobhistory.address hadoop102:10020 mapreduce.jobhistory.webapp.address hadoop102:19888 然后分发脚本同步机器配置文件及启动历史服务器
分发[student@hadoop102 hadoop]$ xsync mapred-site.xml 启动[student@hadoop102 hadoop-3.1.3]$ mapred --daemon start historyserver 查看[student@hadoop102 hadoop-3.1.3]$ jps 60453 NameNode 60597 DataNode 61285 JobHistoryServer --历史服务器 61142 NodeManager 61848 Jps
2.HDFS的Shell相关操作(开发) 1.基础命令yarn-site.xml
yarn.log-aggregation-enable true yarn.log.server.url http://hadoop102:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800 之后需要重启历史服务器与yarn (操作顺序不可变)
[student@hadoop102 hadoop-3.1.3]$ mapred --daemon stop historyserver [student@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh [student@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh [student@hadoop102 hadoop-3.1.3]$ mapred --daemon start historyserver之后的任务就会生成日志信息了 在 url: hadoop102:19888 中查看
创建文件夹:hadoop fs -mkdir /sanguo 剪切文件到HDFS:hadoop fs -moveFromLocal ./shuguo.txt /sanguo 上传文件到HDFS(与拷贝效果相同):hadoop fs -put wuguo.txt /sanguo 获取HDFS上的文件:hadoop fs -get /sanguo/shuguo.txt 本地文件内容追加到HDFS文件内容末尾:hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt 查看HDFS文件内容:hadoop fs -cat /sanguo/shuguo.txt 删除HDFS文件或文件夹:hadoop fs -rm /sanguo/shuguo.txt 递归删除HDFS文件夹:hadoop fs -rm -r /sanguo 显示文件末尾1kb的数据:hadoop fs -tail /sanguo/shuguo.txt
1.2统计文件夹的大小信息
[student@hadoop102 ~]$ hadoop fs -du -s -h /output2 38 114 /output2 38:代表文件夹的大小 114:代表38*3个副本 /output2:代表查看的目录
1.3设置HDFS中文件的副本数量
^C[student@hadoop102 ~]$ hadoop fs -setrep 10 /output2/part-r-00000 Replication 10 set: /output2/part-r-00000 [student@hadoop102 ~]$ hadoop fs -ls /output2/* -rw-r--r-- 3 student supergroup 0 2022-01-08 15:33 /output2/_SUCCESS -rw-r--r-- 10 student supergroup 38 2022-01-08 15:33 /output2/part-r-00000 这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。2.HDFS的API参数优先级
①linux里hdfs配置文件 和 ②Java项目hdfs-site.xml配置文件 and ③java类代码中 三者优先级如下 ③ > ② > ①3.JavaAPI操作HDFS编程
详见:Java操作HDFS



