Hadoop l2 hadoop发展与操作
hadoop 介绍与发展
基于java语言实现
HDFS 解决海量数据存储
YARN 集群资源管理与任务调度框架
MapReduce 解决海量数据计算
hadoop特性优点
扩容能力强 可以灵活扩展到数以千计的节点
成本低 允许通过部署廉价机器组成集群来处理大数据
效率高 可以在节点之间动态并行的移动数据
可靠性 能自动维护数据的多份复制
使用简单
hadoop发行版本
apache 官方发行版本
商业发行版本 基于apache发行版

hadoop集群
hadoop包括两个集群 HDFS集群和YARN集群
两个集群在逻辑上分离,物理上在一起
都是主从架构集群
两个集群没有依赖,互不影响,但是往往部署在同一台服务器上
分布式部署
我们先假设你已经有一个编译好的虚拟机
集群角色规划
角色规划准则
根据软件工作特性和服务器硬件资源合理分配
注意事项
资源冲突的不要部署在一起
工作需要配合的尽量部署在一起
集群环境部署
主机名
vim etc/hostnameHosts映射
vim etc/hosts防火墙关闭
systemctl stop firewall.service #关闭防火墙systemctl disable firewalld.service#防止防火墙开机自启SSH免密码登录(node1执行 ->node1|node2|node3
ssh-keygen4个回车,生成公钥私钥ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3时间同步
ntpdate ntp4.aliyun.com阿里云的授时服务创建统一工作目录
mkdir -p /export/servermkdir -p /export/softwaremkdir -p /export/software配置JDK
上传解压Hadoop

修改配置文件

其中修改配置文件(配置文件路径 hadoop-3.3.0/etc/hadoop)
hadoop-env.sh
#文件最后添加
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=rootcore-site.xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<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>hdfs-site.xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>mapred-site.xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- MR程序历史服务器web端地址 -->
<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>yarn-site.xml
<!-- 设置YARN集群主角色运行机器位置 -->
<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>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 历史日志保存的时间 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
workers
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn分发同步hadoop安装包
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
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
#别忘了scp给其他两台机器哦NameNode format(格式化操作)
> 首次启动HDFS的时候需要格式化操作
只能初始化一次,再次初始化需要重新使用配置文件
Hadoop启动
手动逐个启动

shell脚本一键启动

可以使用jps来查看进程是否启动成功
[root@node1 ~]# jps
32328 DataNode
32121 NameNode
34090 Jps
启动日志/export/server/hadoop-3.3.0/logs
HDFS集群WEBUI
地址http://namenode.host:9870
YARN集群地址为:http://namenode.host:8088/
比如node1的地址就是
node1.9870
初体验
hadoop fs -mkdir /itcast 创建文件夹
hadoop fs -ls /
.....
本质还是一个文件系统
看起来和linux很像