- hadoop概述
- 什么是hadoop?
- hadoop特点
- hadoop组成
- hadoop分布集群搭建
- 前置准备
- 关闭防火墙
- 修改各个节点的主机名
- 修改自己所用节点的IP映射
- 需要在所有节点上完成网络配置
- 时间同步(三台机器均执行)
- ssh免密(三台主机)
- zookeeper
- hadoop
- 安装hadoop
- 配置PATH变量
- 配置hadoop-env.sh
- ②配置core-site.xml
- ③配置hdfs-site.xml
- ④配置yarn-env.sh
- ⑤配置yarn-site.xml
- ⑥配置mapred-site.xml
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。(摘自百度百科)
hadoop特点1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖 。
2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 。
4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配 。
hdfs:分布式文件系统Namenode:存放文件系统树及所有文件、目录的元数据
Secondary Namenode :定期合并主Namenode的namespace image和edit log, 避免edit log过大,通过创建检查点checkpoint来合并。
Datanode:在本地文件系统存储文件块数据,以及块数据的校验和,读写请求可能来自namenode,也可能直接来自客户端。
yarn
ResourceManager(RM)主要作用如下
(1)处理客户端请求
(2)监控NodeManager
(3)启动或监控ApplicationMaster
(4)资源的分配与调度
NodeManager(NM)主要作用如下
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令
(3)处理来自ApplicationMaster的命令
ApplicationMaster(AM)作用如下
(1)负责数据的切分
(2)为应用程序申请资源并分配给内部的任务
(3)任务的监控与容错
Container:YARN中的资源抽象,它封装了草个节点上的多维度资源,如内存、CPu、磁盘、网络等。
mapreduce
MapReduce是一个可用于大规模数据处理的分布式计算框架
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总
这里我准备了三台centos7虚拟机,ip分别为
master 192.168.72.150 slave1 192.168.72.151 slave2 192.168.72.152
更改IP详见本篇博客
Failed to start LSB: Bring up/down解决方法
依次执行以下指令
systemctl stop NetworkManager systemctl disable NetworkManager #重新启动网络 systemctl start network.service关闭防火墙
CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。
#查看防火墙状态 systemctl status firewalld
在 CentOS 6.x 中,可以通过如下命令关闭防火墙:
sudo service iptables stop # 关闭防火墙服务 sudo chkconfig iptables off # 禁止防火墙开机自启,就不用手动关闭了
若用是 CentOS 7,需通过如下命令关闭(防火墙服务改成了 firewall):
#关闭firewall systemctl stop firewalld.service #禁止firewall开机启动 systemctl disable firewalld.service修改各个节点的主机名
sudo vim /etc/hostname #192.168.72.150改为master #192.168.72.151改为slave1 #192.168.72.152改为slave2修改自己所用节点的IP映射
sudo vim /etc/hosts
例如本教程使用两个节点的名称与对应的 IP 关系如下:
192.168.72.150 master 192.168.72.151 slave1 192.168.72.152 slave2
修改完成后需要重启一下,重启后在终端中才会看到机器名的变化
需要在所有节点上完成网络配置测试是否相互 ping 得通
ping Master -c 3 # 只ping 3次,否则要按 Ctrl+c 中断 ping Slave1 -c 3时间同步(三台机器均执行)
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile # 下载ntp(三台机器) yum install -y ntp
master 作为 ntp 服务器,修改 ntp 配置文件。(master 上执行)
vim /etc/ntp.conf
删除或注释默认的时钟源服务器
添加如下内容,使master做为本地的时钟源
server 127.127.1.0 #local clock fudge 127.127.1.0 stratum 10 #stratum 设置为其它值也是可以的,其范围为 0~15
在master上面启动ntp服务
systemctl start ntpd.service
在slave1和slave2上同步
ntpdate master
查看定时任务服务状态
service crond status
在slave1和slave2上设置定时任务
注释:
crontab任务解读
格式:minute hour day month week commond
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。**
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。
crontab -e
*/10 * * * * /usr/sbin/ntpdate master#每10分钟同步一次 */30 8-17 * * * /usr/sbin/ntpdate master#30分钟一次,早8-晚五
查看定时任务
crontab -lssh免密(三台主机)
dsa认证
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@slave1:~/.ssh/ scp ~/.ssh/authorized_keys root@slave2:~/.ssh/
如果slave1和slave2没有.ssh文件夹,就先全部使用ssh localhost命令
rsa认证
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id slave1 ssh-copy-id slave2zookeeper
详见zookeeper安装博文(附脚本)
hadoop 安装hadoophadoop-2.7.3下载地址
将 Hadoop 解压到/usr/ 中。
tar -zxf hadoop-2.7.3.tar.gz -C /usr/hadoop
检查 Hadoop 是否可用
cd /usr/hadoop/hadoop-2.7.3 # 切换当前目录为 /usr/local/hadoop 目录 ./bin/hadoop version # 查看 Hadoop 的版本信息
配置环境变量
打开/etc/profile文件
vi /etc/profile
在profile文件末尾添加hadoop路径:
##HADOOP_HOME export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
生成环境变量
source /etc/profile
自定义终端,执行 vim ~/.bashrc,加入一行
export PATH=$PATH:/usr/local/hadoop/bin:/usr/hadoop/sbin
重启(如果Hadoop命令不能用再重启)
sync reboot
注释:
查看hadoop目录结构
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
(1)默认配置文件:
| 要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
|---|---|
| [core-default.xml] | hadoop-common-2.7.2.jar/ core-default.xml |
| [hdfs-default.xml] | hadoop-hdfs-2.7.2.jar/ hdfs-default.xml |
| [yarn-default.xml] | hadoop-yarn-common-2.7.2.jar/ yarn-default.xml |
| [mapred-default.xml] | hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml |
(2)自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
由于我们拥有三台机器搭建分布式系统,所以在配置文件前先对其进行分工
| Master | Slave1 | Slave2 | |
|---|---|---|---|
| HDFS | NameNode&Datanode | DataNode | SeconderyNameNode&Datanode |
| YARN | NodeManager | ResourceManager&NodeManager | NodeManager |
切换到Hadoop的配置文件目录
cd $HADOOP_HOME/etc/hadoop配置hadoop-env.sh
vi hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_171②配置core-site.xml
vi core-site.xml③配置hdfs-site.xmlfs.default.name hdfs://master:9000 hadoop.tmp.dir /usr/hadoop/hadoop-2.7.3/hdfs/tmp A base for other temporary directories. io.file.buffer.size 131072 fs.checkpoint.period 3600 fs.checkpoint.size 67108864
vi hdfs-site.xml
④配置yarn-env.shdfs.replication 2 dfs.namenode.name.dir file:/usr/hadoop/hadoop-2.7.3/hdfs/name true dfs.datanode.data.dir file:/usr/hadoop/hadoop-2.7.3/hdfs/data true dfs.namenode.secondary.http-address master:9001 dfs.webhdfs.enabled true dfs.permissions false
vi yarn-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_171⑤配置yarn-site.xml
vi yarn-site.xml⑥配置mapred-site.xmlyarn.resourcemanager.address master:18040 RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等 yarn.resourcemanager.scheduler.address master:18030 RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等 yarn.resourcemanager.webapp.address master:18088 RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息 yarn.resourcemanager.resource-tracker.address master:18025 RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等 yarn.resourcemanager.admin.address master:18141 指定RM进程所在主机为master,端口为18141 yarn.nodemanager.aux-services mapreduce_shuffle NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 yarn.nodemanager.auxservices.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler 需要设置Map Reduce启动shuffle服务
cp mapred-site.xml.template mapred-site.xml && vi mapred-site.xml
mapreduce.framework.name yarn 向yarn申请资源
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。



