c语言sscanf函数的用法是什么
248
2022-11-20
Hadoop之基础知识与搭建
Hadoop之基础篇
Hadoop 概述
1.Apache Hadoop 官网与下载
官网地址: 下载地址:优势[四高]
高可用性:Hadoop底层维护多个数据副本,不会导致数据的丢失高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度高容错性:能够自动将失败的任务重新分配
3.Hadoop组成
在Hadoop2.x时代,在1.x版本基础上增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。不同于1.x中MapReduce需要同时负责处理业务逻辑运算和资源的调度,解决了耦合性强的缺点。Hadoop3.x在组成上没有变化。由MapReduce(计算),Yarn(资源调度),HDFS(数据存储),Common(辅助工具)四部分组成
Hadoop运行环境搭建(开发应用)
1.虚拟机环境准备
使用VMwar Workstation安装CentOS7 满足以下条件:内存4G,硬盘50G,可以连接外部网络
2.使用yum命令安装必要工具包
(epel-release,net-tool,vim编译器)
yum install -y epel-release yum install -y net-tools yum install -y vim
3.关闭防火墙
在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安 全的防火墙
systemctl stop firewalldsystemctl disable firewalld.service
4.重启虚拟机
reboot
5.克隆相同的两台虚拟机加以配置以下内容
克隆过程中时需要关闭虚拟机,克隆后需要修改ip以及hostname 执行以下脚本vim /etc/sysconfig/network-scripts/ifcfg-ens33 将IP内容修改为:
DEVICE=ens33TYPE=EthernetONBOOT=yesBOOTPROTO=staticNAME="ens33"IPADDR=xxx.xxx.xx.x #主机虚拟iPPREFIX=24GATEWAY=xxx.xxx.xx.2 #主机虚拟iP 后面一位固定为2DNS1=xxx.xxx.xx.2 #主机虚拟iP 后面一位固定为2
执行命令vim /etc/hostname修改主机名称 为:hadoop102
执行命令vim /etc/hosts 配置Linux主机host文件映射添加各台ip如下:
192.168.189.101 hadoop102192.168.189.102 hadoop103192.168.189.103 hadoop104
6.修改windows 的主机映射文件(host文件)
进入 C:\Windows\System32\drivers\etc 路径拷贝 hosts 文件到桌面使用notepad++或者文本编辑器打开桌面 hosts 文件并添加如下内容在末尾:
192.168.189.101 hadoop102192.168.189.102 hadoop103192.168.189.103 hadoop104
将桌面 hosts 文件覆盖 C:\Windows\System32\drivers\etc 路径 hosts 文件
Hadoop安装
1.在 hadoop102 安装 JDK
导入安装包 至/opt/software/解压 JDK 到/opt/module 目录下
software]$ tar -zxvf jdk-8u212-linuxx64.tar.gz -C /opt/module/
配置 JDK 环境变量
执行命令sudo vim /etc/profile末尾添加如下内容,保存退出
#JAVA_HOMEexport JAVA_HOME=/opt/module/jdk1.8.0_212export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile 执行上述,让新的环境变量 PATH 生效输入java -version 测试JDK安装是否成功,显示内容即为成功
2.在 hadoop102 安装 Hadood102
进入目录/opt/software/解压安装包至/opt/module执行命令tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module 使用/opt/module查看是否解压成功并且使用pwd命令获取当前安装路径配置 Hadoop环境变量
执行命令sudo vim /etc/profile末尾添加如下内容,保存退出
#HADOOP_HOMEexport HADOOP_HOME=/opt/module/hadoop-3.1.3export PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbin
输入hadoop version 测试JDK安装是否成功,显示内容即为成功
Hadoop 目录结构(下述加粗处理为常用)
bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例
完全分布式运行模式
准备工作: 1)准备 3 台客户机(关闭防火墙、静态 IP、主机名称) 2)安装 JDK 3)配置环境变量 4)安装 Hadoop 5)配置环境变量 6)配置集群 7)单点启动 8)配置 ssh 9)群起并测试集
1.到目前为止前5步已经完毕,下面继续看集群搭建以及其他的
2.编写集群分发脚本 xsync
scp(secure copy)安全拷贝 [scp 可以实现服务器与服务器之间的数据拷贝]语法:scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
使用scp 拷贝拉取文件到Hadoop103 Hadoop104主机下
使用hadoop102主机推送到103scp -r /opt/module/jdk1.8.0_212 atguigu@hadoop103:/opt/module使用hadoop103主机拉取hadoop102数据scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/使用hadoop103实现跨机器拉取数据scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/modulersync 远程同步工具差异点:rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更 新。scp 是把所有文件都复制过去
语法:rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称 归档拷贝-a 显示复制过程-v
使用:rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/xsync 集群分发脚本在当前账户 /bin 目录下创建 xsync 文件
mkdir bin cd binvim xsync # 添加如下代码
#!/bin/bash#1. 判断参数个数if [ $# -lt 1 ]then echo Not Enough Arguement! exit;fi#2. 遍历集群所有机器for host in hadoop102 hadoop103 hadoop104do 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/$fname $host:$pdir else echo $file does not exists! fi donedone
修改脚本 xsync 具有执行权限chmod +x xsync测试脚本-分发到其他主机xsync ./bin/xsync分发环境变量至其他主机xsync /etc/profile执行source /etc/profile 让其他主机环境变量生效
3.SSH 无密登录配置
免密登录原理
生成公钥和私钥进入 /home/账户/.ssh,执行ssh-keygen -t rsa 然后敲3个回车,生成id_rsa(私钥),id_rsa.pub(公钥)将公钥拷贝到要免密登录的其他目标机器上
ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104
相同的策略配置hadoop103,hadoop104
4.集群配置
NameNode 和 SecondaryNameNode 不要安装在同一台服务器ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在 同一台机器上。
hadoop102 | hadoop103 | hadoop104 | |
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
配置文件说明
自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在 $HADOOP_HOME/etc/hadoop 这个路径上,可以根据项目需求重新进行修改配置。以下为具体配置集群
1.核心配置文件
配置 core-site.xml
cd $HADOOP_HOME/etc/hadoopvim core-site.xml#文件内容配置如下:
2.HDFS 配置文件
配置 hdfs-site.xml
vim hdfs-site.xml#文件内容配置如下:
3.YARN 配置文件
配置 yarn-site.xml
vim yarn-site.xml#文件内容配置如下:
4.MapReduce 配置文件
配置 mapred-site.xml
vim mapred-site.xml#文件内容配置如下:
在集群上分发配置好的 Hadoop 配置文件
xsync /opt/module/hadoop3.1.3/etc/hadoop/
去 103 和 104 俩节点上查看文件分发情况
cat /opt/module/hadoop3.1.3/etc/hadoop/core-site.xml
5.群起集群
配置 workers
使用命令vim /opt/module/hadoop3.1.3/etc/hadoop/workers在该文件中增加如下内容:
hadoop102hadoop103hadoop104
小注意点:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。 执行命令xsync /opt/module/hadoop-3.1.3/etc
启动集群如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式 化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找 不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。
hdfs namenode -format
使用命令sbin/start-dfs.sh启动 HDFS使用命令sbin/start-yarn.sh启动 YARN(在配置了 ResourceManager 的节点(hadoop103))Web 端查看 HDFS 的 NameNode浏览器中输入:HDFS 上存储的数据信息Web 端查看 YARN 的 ResourceManager浏览器中输入:YARN 上运行的 Job 信息配置历史服务器
#配置 mapred-site.xml vim mapred-site.xml #在该文件里面增加如下配置
# 配置 yarn-site.xmlvim yarn-site.xml#在上诉文件里面增加如下配置。
集群基本测试上传文件到集群 hadoop fs -mkdir /input |hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input上传文件后查看文件存放在什么位置pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598- 192.168.10.102-1610603650062/current/finalized/subdir0/subdir0
查看文件使用cat blk_文件编码
拼接cat blk_文件编码>>tmp.tar.gz下载 hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./执行 wordcount 程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
6.集群启动/停止方式总结/常用脚本
个模块分开启动/停止(配置 ssh 是前提)常用
整体启动/停止 HDFSstart-dfs.sh/stop-dfs.sh整体启动/停止 YARNstart-yarn.sh/stop-yarn.sh
个服务组件逐一启动/停止
分别启动/停止 HDFS 组件hdfs --daemon start/stop namenode/datanode/secondarynamenode启动/停止 YARNyarn --daemon start/stop resourcemanager/nodemanager
写 Hadoop 集群常用脚本
Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh
cd /home/atguigu/bin vim myhadoop.sh #输入如下内容 #!/bin/bashif [ $# -lt 1 ]then echo "No Args Input..." exit ;ficase $1 in"start") echo " =================== 启动 hadoop 集群 ===================" echo " --------------- 启动 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver";;"stop") echo " =================== 关闭 hadoop 集群 ===================" echo " --------------- 关闭 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh";;*) echo "Input Args Error...";;esac
保存后退出,然后赋予脚本执行权限 chmod +x myhadoop.sh查看三台服务器 Java 进程脚本:jpsall
cd /home/atguigu/binvim jpsall#输入如下内容#!/bin/bashfor host in hadoop102 hadoop103 hadoop104do echo =============== $host =============== ssh $host jps done
保存后退出,然后赋予脚本执行权限chmod +x jpsall分发/home/atguigu/bin 目录,保证自定义脚本在三台机器上都可以使用
xsync /home/atguigu/bin/
## 5.常用端口号说明与集群时间同步
常用端口号说明
端口名称 | Hadoop2.x | Hadoop3.x |
NameNode 内部通信端口 | 8020 / 9000 | 8020 / 9000/9820 |
NameNode HTTP UI | 50070 | 9870 |
MapReduce 查看执行任务端口 | 8088 | 8088 |
历史服务器通信端口 | 19888 | 19888 |
集群时间同步
如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期 和公网时间进行校准; 如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差, 导致集群执行任务时间不同步。
时间服务器配置(必须 root 用户)查看所有节点 ntpd 服务状态和开机自启动状态
systemctl status ntpdsystemctl start ntpdsystemctl is-enabled ntpd
修改 hadoop102 的 ntp.conf 配置文件vim /etc/ntp.conf
取消注释#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
注释调以下代码,使集群在局域网中,不使用其他互联网上的时间
server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中 的其他节点提供时间同步
server 127.127.1.0fudge 127.127.1.0 stratum 10
修改 hadoop102 的/etc/sysconfig/ntpd 文件
sudo vim /etc/sysconfig/ntpd # 增加内容如下(让硬件时间与系统时间一起同步)SYNC_HWCLOCK=yes
重新启动 ntpd 服务systemctl start ntpd设置 ntpd 服务开机启动systemctl enable ntpd其他机器配置(必须 root 用户)关闭所有节点上 ntp 服务和自启动
systemctl stop ntpdsystemctl disable ntpd
在其他机器配置 1 分钟与时间服务器同步一次
crontab -e # 103节点# 编写定时任务如下*/1 * * * * /usr/sbin/ntpdate hadoop102#查看时间date# 修改机器时间date -s "2022-4-30 11:11:11"
### 6.常见错误及解决方案
防火墙没关闭、或者没有启动
YARN INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
主机名称配置错误IP 地址配置错误ssh 没有配置好root 用户和 使用用户 两个用户启动集群不统一配置文件修改不细心不识别主机名称
java.net.UnknownHostException: hadoop102: hadoop102 at java.net.InetAddress.getLocalHost(InetAddress.java:1475) at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)
解决办法:
在/etc/hosts 文件中添加 192.168.10.102 hadoop102主机名称不要起 hadoop hadoop000 等特殊名称
DataNode 和 NameNode 进程同时只能工作一个
执行命令不生效,粘贴 Word 中命令时,遇到-和长–没区分开。导致命令失效 解决办法:尽量不要粘贴 Word 中代码。jps 发现进程已经没有,但是重新启动集群,提示进程已经开启。
原因是在 Linux 的根目录下/tmp 目录中存在启动的进程临时文件,将集群相关进程删 除掉,再重新启动集群。
jps 不生效
原因:全局变量 hadoop java 没有生效。解决办法:需要 source /etc/profile 文件。
8088 端口连接不上
执行cat /etc/hosts注释掉如下代码
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4#::1 hadoop102
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~