上一节:
https://blog.csdn.net/m0_56600567/article/details/125676674
Apache Hadoop概述
Hadoop介绍
狭义上Hadoop指的是Apache软件基金会的一款开源软件。 用java语言实现,开源 允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理
- Hadoop核心组件
Hadoop HDFS(分布式文件存储系统)︰解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架)︰解决资源任务调度Hadoop MapReduce(分布式计算框架)︰解决海量数据计算
hadoop
广义上Hadoop指的是围绕Hadoop打造的大数据生态圈。
Hadoop现状
- HDFS作为分布式文件存储系统,处在生态圈的底层与核心地位;
- YARN作为分布式通用的集群资源管理系统和任务调度平台,支撑各种计算引擎运行,保证了Hadoop地位;
- MapReduce作为大数据生态圈第一代分布式计算引擎,由于自身设计的模型所产生的弊端,导致企业一线几乎不再直接使用MapReduce进行编程处理,但是很多软件的底层依然在使用MapReduce引擎来处理数据
Hadoop特性优点
- 扩容能力(scalability)
Hadoop是在可用的计算机集群间分配 数据并完成计算任务的,这些集群可方 便灵活的方式扩展到数以千计的节点。 - 成本低(Economical)
Hadoop集群允许通过部署普通廉价的机 器组成集群来处理大数据,以至于成本很 低。看重的是集群整体能力。 - 效率高(efficiency)
通过并发数据,Hadoop可以在节 点之间动态并行的移动数据,使得 速度非常快。 - 可靠性(reliability)
能自动维护数据的多份复制,并且在任务 失败后能自动地重新部署(redeploy)计 算任务。所以Hadoop的按位存储和处理 数据的能力值得人们信赖。
Hadoop应用
- Yahoo
支持广告系统 用户行为分析 支持Web搜索 反垃圾邮件系统 - Facebook
存储处理数据挖掘和日志统计 构建基于Hadoop数据仓库平台(Apache Hive来自FB) - IBM
蓝云基础设施构建 商业化Hadoop发行、解决方案支持 - 百度
用户搜索表征的需求数据、阿拉丁爬虫数据存储 数据分析和挖掘 竞价排名 - 阿里巴巴
为电子商务网络平台提供底层的基础计算和存储服务 交易数据、信用数据 - 腾讯
用户关系数据 基于Hadoop、Hive构建TDW(腾讯分布式数据仓库) - 华为
对Hadoop的HA方案,以及HBase领域有深入研究
Hadoop集群简介
Hadoop集群包括两个集群:HDFS集群、YARN集群
- HDFS集群(分布式存储)
主角色:NameNode(NN) 从角色:DataNode(DN) 主角色辅助角色:SecondaryNameNode(SNN)
- YARN集群(资源管理、调度)
主角色:ResourceManager(RM) 从角色:NodeManager(NM)
Hadoop集群搭建
安装包、源码包下载地址
集群角色规划
- 角色规划的准则
根据软件工作特性和服务器硬件资源情况合理分配 - 角色规划注意事项
资源上有抢夺冲突的,尽量不要部署在一起 工作上需要互相配合的。尽量部署在一起
服务器基础环境:
主机名 (3台机器) cat /etc/hostname
hosts映射(3台机器) cat /etc/hosts
防火墙关闭(3台机器) systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service #禁止防火墙开启自启 systemctl status firewalld.service #查看防火墙状态
ssh免密登录 ssh-keygen #一直回车即可 生成公钥、私钥 ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3 #依次输入,上传公钥到服务器 ssh node1 ssh node 2 ssh node3 #验证:在已经配置了的机器上
集群时间同步(3台机器) yum -y install ntpdate ntpdate ntp4.aliyun.com 如果没有出现上图,则可能是因为网络问题 ,再次执行即可
创建统一工作目录(3台机器) mkdir -p /export/server/ #软件安装路径 mkdir -p /export/data/ #数据存储路径 mkdir -p /export/software/ #安装包存放路径 ls /export/ #验证3个目录是否都已经创建了
JDK 1.8安装(3台机器)选择在第一台机器安装,在发送给其他机器
- 找到目录
- 将安装包拖拽进去
- 打开目录:cd /export/server
查看:ll - 解压:tar -zxvf jdk-8u241-linux-x64.tar.gz
- 检查:ll
可以选择删除压缩包:rm -rf jdk-8u241-linux-x64.tar.gz - 配置环境变量
官方文档 配置环境变量 vim /etc/profile #Go #跳转到文件末行 写入文件末行后保存 export JAVA_HOME=/export/server/jdk1.8.0_241 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 如何保存?小白不会保存?在文本末端按esc,然后是(shift+z)按两次,即可保存退出了 注意:如果出现如下问题: 解决方案:来自转载
- #重新加载环境变量文件
source /etc/profile #检查是否生效:成功显示版本就生效了哦 java -version - 剩下两台机器,采用远程拷贝,拷贝jdk+环境变量
#使用绝对路径来做 cd ~ #scp 远程拷贝 scp -r /export/server/jdk1.8.0_241/ root@node2:/export/server/ scp -r /export/server/jdk1.8.0_241/ root@node3:/export/server/ scp -r /etc/profile root@node2:/etc/ scp -r /etc/profile root@node3:/etc/ - 对3太机器同时发送命令,依次查看是否都安装好了jdk,配置好了环境变量
#重新加载环境变量文件 source /etc/profile #检查是否生效:成功显示版本就生效了哦 java -version
上传解压Hadoop
- 上传安装包到对应的位置并查看
- 进行解压:tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz (可以将安装包删除:rm -rf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz )
- 打开文件(cd hadoop-3.3.0),查看内容(ll)
- 主要的几个目录:
- 修改配置文件
官网文档:https://hadoop.apache.org/docs/r3.3.0/ pwd–>ll—>cd etc/ —>ll —>cd hadoop/–>pwd—>ll
- 打开文件:vim hadoop-env.sh,去往最后一行:Go
- 插入:
export JAVA_HOME=/export/server/jdk1.8.0_241
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
- 保存并退出:esc —>shift+zz
- 打开文件:vim core-site.xml
- <configuration>添加内容的位置</configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
- 保存并退出:esc —>shift+zz
- 打开hdfs-site.xml:vim hdfs-site.xml
- <configuration>添加内容的位置</configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
- 保存并退出:esc —>shift+zz
-
打开:vim mapred-site.xml -
插入:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
- 保存并退出:esc —>shift+zz
-
打开:vim yarn-site.xml -
插入 注意:中间的注释可以删除:dd i进入插入模式,
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
- 保存并退出:esc —>shift+zz
-
打开:vim works -
删除: dd,添加 node1.itcast.cn
node2.itcast.cn
node3.itcast.cn
-
保存并退出:esc —>shift+zz
cd /export/server
scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD
- 将hadoop添加到环境变量(3台机器)
打开:vim /etc/profile 到末行:Go 添加:
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
scp -r /etc/profile root@node2:/etc/ scp -r /etc/profile root@node3:/etc/
- 3台机器执行:source /etc/profile
- 验证:hadoop
格式化操作
- 首次启动HDFS时,必须对其进行格式化操作。
- format本质上是初始化工作,进行HDFS清理和准备工作
- 只能初始化一次
- 第一台机器!!!
hdfs namenode -format
成功标志: 如果多次format除了造成数据丢失外,还会导致hdfs集群主从角色之间互不识别。通过删除所有机器hadoop.tmp.dir目录重新format解决 以下链接可能有用,我自己没有试过 重新格式化 重新格式化需注意问题
Hadoop集群启停命令、Web UI
手动逐个进程启停
优点:可以精准控制每个进程启停,避免群起群停。 缺点:比较麻烦。
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
hdfs --daemon start|stop namenode|datanode|secondarynamenode
yarn-daemon.sh start|stop resourcemanager|nodemanager
yarn --daemon start|stop resourcemanager|nodemanager
shell脚本一键启停
前提:配置好机器之间的SSH免密登录和workers文件。
start-dfs.sh
stop-dfs.sh
start-yarn.sh
stop-yarn.sh
start-all.sh
stop-all.sh
启动第一台机器 第一台机器输入命令:start-dfs.sh 然后依次在第一台,第二台,第三台机器上输入jps 结果:
没有试过,但是有人遇到了这样的问题:hadoop集群启动的时候,从机的DataNode没有启动的原因及解决
补充记忆:
- 在这里使用Java进程查看是否启动成功,进程是ps(progress),Java进程命令是jps
- 在屏幕内容过多时,使用CTRL+l进行清屏操作
如何查看是否启动成功?
- 通过进程查看
注意: 如果出现一个进程查看的时候存在,过一会就不在了,叫做进程的闪退,说明配置有问题 - 看日志
Hadoop启动日志路径:/export/server/hadoop-3.3.0/logs/
集群的Web页面浏览
HDFS集群 地址:http://namenode_host:9870 其中namenode_host是namenode运行所在机器的主机名或者ip
浏览文件系统:
YARN集群 地址:http://resourcemanager_host:8088 其中resourcemanager_host是resourcemanager运行所在机器的主机名或者ip
|