Hadoop简介与分布式安装
Hadoop
简介
Hadoop 是Apache Lucene创始人道格·卡丁(Doug Cutting)创建的,Lucene是一个应用广泛的文本搜索库,Hadoop起源于开源网络搜索引擎Apache Nutch,后者是Lucene项目的一部分.
Apache Hadoop项目的目标是可靠的、可拓展的分布式计算开发开源软件。
Apache Hadoop平台本质是一个计算存储框架,允许使用简单的编程模型跨计算机集群地处理大型数据集,将计算存储操作从单个服务器拓展到数千台服务器(小型机)每台服务器提供本地计算和存储。平台本身不是依靠提升硬件来提高高可用的,而是在应用层检测和处理故障。从而在一组计算机上提供高性能的服务,每个计算机都可能出现故障,Hadoop中所有的模块。都基于一个假设,即硬件故障是常见事件,应由框架自动处理。
Hadoop是一个用Java编写的Apache开放源代码框架,它允许使用简单的编程模型在计算机集中环境分布式处理大型数据集。Hadoop框架式应用程序在跨计算机集群提供分布式存储在计算集群提供的存储和计算环境中工作,Hadoop旨在从单个服务器扩展到数千台机器,每台机器提供了本地计算和存储。
其核心构成分别为 HDFS(分布式文件系统)、MapReduce(分布式计算系统)、Yarn(资源管理系统)
HDFS
HDFS是Google发布于2003年10月的《Google FS》的开源实现。
Hadoop分布式文件系统(HDFS)能够提供对数据访问的高吞吐量,适用于大数据场景的数据存储,因为HDFS提高了高可靠性(主要通过多副本实现)、高拓展性(通过添加机器来达到线性拓展)、和高吞吐率的数据存储服务,Hadoop是被设计成能够运行在通用的硬件上的分布式文件系统,因此可以使用廉价的通用机器。大大减少了公司的成本。
HDFS的基本原理是将数据文件以指定大小拆分成数据块,并将数据块以副本的方式存储到多台机器上,即使其中某一个节点出现故障,那么该节点上的数据块副本丢失还有其对应的其他节点的数据副本,但是前提是你的副本系数大于1,HDFS将数据文件拆分、容错、负载均衡等透明化(用户感知不到整个过程,只知道上传了一个文件到HDFS上其中数据的切分、存储在那些机器上是感知不到的)我们可以把HDFS看成是一个容量巨大的、具有高容错的磁盘,在使用的时候完全可以当作本地的磁盘进行使用,所以说HDFS是适用于海量数据的可靠性存储。
Mapreduce
Mapreduce是一个分布式、并发处理的编程模型,用于进行大数据量的计算,MapReduce的名字源于模型中的两个操作:Map(映射)和Reduce(归纳)。Mapreduce是一种简化并进行应用程序开发的编程模型,能够让没有多少并行应用经验的开发人员可以进行快速地学会并行应用开发,而且不需要去关注并行计算中地一些底层问题,按照Mapreduce API的编程模型实现业务逻辑的开发即可。
一个Mapreduce作业通常会把输入的结果集切分成若干个独立的数据块,由map任务以并行处理的方式,对map的输出先进行排序,然后把结果输入给reduce任务由reduce任务来完成最终的统一处理。通常Mapreduce作业的输入和输出都是用HDFS进行存储的,也就是说Mapreduce框架处理数据的输入源和输出目的地大部分场景都是储存在HDFS上。
在部署Hadoop集群时,通常是将计算节点和存储节点部署在同一个节点上,这样做的原因是允许计算框架在任务调度时,可以先将作业优先调度到那些已经存有数据节点上进行数据计算,这样可以使整个集群的网络带宽十分高效地利用,这也是大数据中十分著名地话“移动计算而不是移动数据”。
Yarn
Yarn的全成是 Yarn Another Resource Negotiator,是一个同源资源管理系统,可以为运行在YARN之上的分布式程序提供统一的资源管理和调度。在Yarn我们可以运行不同类型的作业,如:Mapreduce、Spark、TEZ等不同的计算框架
Yarn是随着Hadoop发展而催生的新框架,Yarn的基本思想是将Hadoop1.x中的Mapreduce架构中的JobTracker的资源管理和作业调度监控功能进行分离,解决了Hadoop1.x只能运行 Mapreduce框架的限制。
安装
机器
准备3台linux机器
本教程ip配置如下
hostname | ip | 角色 |
---|---|---|
datanode1 | 192.168.1.101 | NameNode Datanode |
datanode2 | 192.168.1.102 | SecondaryNameNode Datanode |
datanode3 | 192.168.1.103 | ResourceManager DataNode |
修改主机名
1234 |
vim /etc/sysconfig/networkETWORKING=yesHOSTNAME=datanode1#其他机器依次执行 |
SSH
设置master节点和两个slave节点之间的双向ssh免密通信,下面以master节点ssh免密登陆slave节点设置为例,进行ssh设置介绍(以下操作均在master机器上操作):
123456789101112 |
首先生成master的rsa密钥:ssh-keygen -t rsa 设置全部采用默认值进行回车将生成的rsa追加写入授权文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys给授权文件权限:chmod 600 ~/.ssh/authorized_keys进行本机ssh测试:ssh datasnode1 正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码将master上的authorized_keys传到datanode1sudo scp ~/.ssh/id_rsa.pub hadoop@datanode1:~/ 登陆到slave1操作:ssh slave1输入密码登陆 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys修改authorized_keys权限:chmod 600 ~/.ssh/authorized_keys退出slave1:exit进行免密ssh登陆测试:ssh slave1 |
JAVA
1.解压
1 |
tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/module/ |
2.配置
12345 |
# 修改 /etc/profile#JAVA_HOMEexport JAVA_HOME=/opt/module/jdk1.8.0_162export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH |
3.更新
1 |
source /etc/profile |
NTP 时间同步
修改配置
1 |
vim /etc/ntp.conf |
主机配置
从机配置
从节点同步时间
12345 |
service ntpd restartchkconfig ntpd on # 开机启动ntpdate -u datanode1crontab -e* */1 * * * /usr/sbin/ntpdate datanode1 #每一小时同步一次 |
同步脚本
1234567891011121314151617181920212223242526 |
#!/bin/bash#1 获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0)); thenecho no args;exit;fi #2 获取文件名称p1=$1fname=`basename $p1`echo fname=$fname #3 获取上级目录到绝对路径pdir=`cd -P $(dirname $p1); pwd`echo pdir=$pdir #4 获取当前用户名称user=`whoami` #5 循环for((host=1; host<4; host++)); do #echo $pdir/$fname $user@datanode$host:$pdir echo --------------- datanode$host ---------------- rsync -rvl $pdir/$fname $user@datanode$host:$pdirdone |
解压文件
12 |
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/mv hadoop-2.7.2 hadoop |
修改配置
core-site
1234567891011121314151617 |
<configuration> <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://datanode1:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop/data</value> </property> <property> <!-- 指定垃圾回收时间每隔60分钟 --> <name>fs.trash.interval </name> <value>60</value> </property></configuration> |
hdfs-site
123456789101112 |
<configuration> <property> <!--指定副本数--> <name>dfs.replication</name> <value>3</value> </property> <property> <!-- 指定 secondaryNamenode --> <name>dfs.namenode.secondary.http-address</name> <value>datanode2:50090</value> </property></configuration> |
yarn-site
1234567891011121314151617 |
<configuration><!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property><!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>datanode3</value> </property> <!--开启历史查看任务--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property></configuration> |
hadoop-env
1 |
export JAVA_HOME=/opt/module/jdk1.8.0_162 |
yarn-env
12 |
#some Java parametersexport JAVA_HOME=/opt/module/jdk1.8.0_162 |
mapred-env
1 |
export JAVA_HOME=/opt/module/jdk1.8.0_162 |
mapred-site
1234567 |
<configuration><!-- 指定mr运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property></configuration> |
分发
12 |
[hadoop@datanode1 module]$ xsync hadoop/[hadoop@datanode1 module]$ xsync jdk1.8.0_162/ |
格式化hdfs
1 |
hdfs namenode -format |
启动
123456789101112 |
[hadoop@datanode1 hadoop]$ start-dfs.sh[hadoop@datanode1 hadoop]$ jps51235 NameNode51356 DataNode52111 Jps51919 NodeManager[hadoop@datanode3 hadoop]$ start-yarn.sh[hadoop@datanode3 hadoop]$ jps22260 ResourceManager22090 DataNode22384 NodeManager23013 Jps |
界面
Hadoop简介与分布式安装相关推荐
- Hadoop单机伪分布式安装(完整版)
在学习Hadoop时,我发现网上的各种安装的资料要不不全,要不前后不匹配(比如有的是伪分布式,有的是完全分布式).此篇文章,我总结了身边的同学在安装Hadoop时遇到的毛病,在前面安装配置环节,尽可能 ...
- hadoop 单机伪分布式安装步骤
文章目录 1. 安装 Java 2. 配置SSH无密码登录 3. 下载 hadoop 4. 配置环境变量 5. 报错处理参考 环境 Centos7 参考: https://hadoop.apache. ...
- Hadoop单机伪分布式安装详解
文章目录 写在开头的话 前提环境准备 配置JAVA环境 将jdk安装包传输至你的Linux宿主机中 操作jdk安装包,然后配置java环境 配置ssh免密登录 安装Hadoop,及其hadoop配置 ...
- 大数据的简介及Hadoop单机和分布式安装方法1
hadoop:开源软件,可靠的.分布式.可伸缩的大数据软件(是一个生态体系包括但不限于:hive.spark.MR.persto.kylin) 国家提出去IOE战略: IBM / ...
- 【Hadoop】伪分布式安装---MapReduce程序运行到YARN上,编写MapReduce程序---HDFS yarn
在我的虚拟机(Linux)上安装的Hadoop是2.7.3版本的,安装过程可以参考这个网站,也可以下载. http://hadoop.apache.org/docs/r2.7.6/hadoop-pro ...
- Hadoop的伪分布式安装
===================主机环境配置开始=============================== step1:安装VMware Workstation Pro step2:安装Ct ...
- linux hadoop namenode_HADOOP_HDFS伪分布式安装步骤
1.网络配置好,关闭iptables防火墙,关闭selinux 2.jdk1.7.0_80 hadoop-2.6.5.tar.gz 上传这两个包 3.安装jdk rpm -ivh jdk-7u80-l ...
- Hadoop集群分布式安装
先创建三台linux的虚拟机 先创建三台linux的虚拟机+ 先删除linux自带的,在安装自己环江所需要的jdk 命令:rpm -qa | grep -i java | xargs -n1 rpm ...
- Hadoop完全分布式安装
Hadoop 博客链接:http://hphblog.cn/2018/12/17/Hadoop简介与分布式安装/ 简介 Hadoop 是Apache Lucene创始人道格·卡丁(Doug Cutti ...
最新文章
- 【亲测可用→防止入坑Routes】设置angular10项目异步加载、惰性加载、懒加载路由
- django--02 模板的使用
- 智能合约重构社会契约(11)天德区块链智能合约系统
- redis.conf 常见配置介绍
- QT中事件发送函数sendEvent()、postEvent()详解
- 宝藏好物gRPCurl
- 实现高性能稳定的socket tcp通讯经验分享
- 【arc068F】Solitaire
- webpack-Hot Module Replacement(热更新)
- Qt中用QLabel显示图片
- php环境配置PHPWAMP
- 9款超级好用的在线PDF工具!
- 2019百度网盘破解不限速
- 今天给大家推荐一个Cleaner One for mac(系统清理优化工具)
- 交叉编译ffmpeg
- 项目成功关键要素和项目成功关键要素
- Tableau磁盘空间满清除临时文件
- 获取top等之类命令的部分打印内容
- STM32中的串口通信的基础知识
- .py文件中发送信息到定义的邮箱
热门文章
- efi引导文件_你们心心念念的oc通用EFI来了!
- 简单编程代码表白_用简单代码实现抖音表白神器
- 一、JSP的基本原理
- webpack项目搭建
- 常用加密算法的Java实现(一)
- nginx日志配置(cookie,header,post等字段记录)
- 【tool】常见功能测试点
- SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)
- 关于预编绎网站的问题[已预编译此应用程序的错误]
- java充血模型orm框架,关于领域驱动设计和贫血、失血、充血模型