180225_hadoop搭建

准备工作:
进入BIOS模式,开放虚拟化权限,安装VMware Workstation,安装CentOS7,安装xshell(用于输命令),filezilla(用于传送文件,修改目录),设置UltraEdit资源管理器中的ftp账号(用于修改文件内容),3台CentOS7,64位,启动网络,启动ftp权限,永久关闭防火墙,设置主机名,设置用户密码,设置静态ip,设置NAT连接
192.168.230.134    master.d5ys
192.168.230.135    slave1.d5ys
192.168.230.136    slave2.d5ys
改其中的对应ip
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
/etc/hosts
/etc/sysconfig/network


改ssh:
master.d5ys:/etc/ssh/sshd_config添加RSAAuthentication yes       PubkeyAuthentication yes
slave1.d5ys:/etc/ssh/sshd_config添加RSAAuthentication yes       PubkeyAuthentication yes
slave2.d5ys:/etc/ssh/sshd_config添加RSAAuthentication yes       PubkeyAuthentication yes
master.d5ys:ssh-keygen -t rsa
slave1.d5ys:ssh-keygen -t rsa
slave2.d5ys:ssh-keygen -t rsa
master.d5ys:cat ~/.ssh/id_rsa.pub>> authorized_keys
slave1.d5ys:cat ~/.ssh/id_rsa.pub>> authorized_keys
slave2.d5ys:cat ~/.ssh/id_rsa.pub>> authorized_keys
把master.d5ys的~/.ssh/authorized_keys文件内容复制到slave1.d5ys和slave2.d5ys的~/.ssh/authorized_keys


master.d5ys新增路径:
/opt/datas
/opt/app
/opt/softwares 存放jdk-7u67-linux-x64.tar.gz,hadoop-2.5.0.tar.gz
/opt/tools


master.d5ys安装jdk
cd /opt/softwares
tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/app/
cd /etc/profile
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin 
source /etc/profile


master.d5ys安装hadoop
cd /opt/softwares
tar -zxf hadoop-2.5.0.tar.gz -C /opt/app/


master.d5ys新增路径:
/opt/app/hadoop-2.5.0/data
/opt/app/hadoop-2.5.0/data/tmp
/opt/datas/wcinput 存放wc.input(里面随便写几个单词)


部署:
master      slave1      slave2
NameNode
DataNode  DataNode    DataNode
                                    SecondaryNameNode
                 ResourceManager
NodeManager NodeManager NodeManager
JobHistoryServer


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/core-site.xml
        <name>fs.defaultFS</name>
        <value>hdfs://master.d5ys:8020</value>
        <name>hadoop.tmp.dir</name>
        <value>/opt/app/hadoop-2.5.0/data/tmp</value>
        <name>fs.trash.interval</name>
        <value>420</value>
        <name>io.file.buffer.size</name>
        <value>131072</value>


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/hdfs-site.xml
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave2.d5ys:50090</value>
        <name>dfs.replication</name>
        <value>3</value>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
        <name>dfs.blocksize</name>
        <value>134217728</value>


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/mapred-site.xml.template重命名为mapred-site.xml
        <name>mapreduce.framework.name</name> <value>yarn</value>
        <name>mapreduce.jobhistory.address</name> <value>master.d5ys:10020</value>
        <name>mapreduce.jobhistory.webapp.address</name> <value>master.d5ys:19888</value>


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/yarn-site.xml
        <name>yarn.resourcemanager.hostname</name>
        <value>slave1.d5ys</value>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_67


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/yarn-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_67


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/mapred-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_67


master.d5ys改/opt/app/hadoop-2.5.0/etc/hadoop/slaves
删除默认的localhost,增加两个从节点ip


===将hadoop-2.5.0发送到另外两台服务器对应路径
master.d5ys:scp -r /opt 从节点1的ip:/
master.d5ys:scp -r /opt 从节点2的ip:/


===master.d5ys启动:
cd /opt/app/hadoop-2.5.0
bin/hdfs namenode -format(第一次需要初始化,之后不用)


===各个服务组件逐一启动(虽然麻烦,但绝对可行)
hdfs:sbin/hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
yarn:sbin/yarn-daemon.sh start|stop resourcemanager|nodemanager


===各个模块分开启动(hadoop2.5.0有bug,resourcemanager不能启动,端口被占用,2.6.0已修复,需要在slave1.d5ys上sbin/yarn-daemon.sh start|stop resourcemanager)
hdfs:sbin/start-dfs.sh|stop-dfs.sh
yarn:sbin/start-yarn.sh|stop-yarn.sh


===直接全部启动(hadoop2.5.0有bug,resourcemanager不能启动,端口被占用,2.6.0已修复,需要在slave1.d5ys上sbin/yarn-daemon.sh start|stop resourcemanager):sbin/start|stop-all.sh


===master.d5ys上测试mapreduce
cd /opt/app/hadoop-2.5.0/
创建目录(参数P表示递归创建目录):bin/hdfs dfs -mkdir -p /user/root/mapreduce/wordcount/input/
xshell上查看(cat文本输出命令):bin/hdfs dfs -cat /user/root/mapreduce/wordcount/input/wc.input
上传文件:/opt/app/hadoop-2.5.0/bin/hdfs dfs -put /opt/datas/wc.input /user/root/mapreduce/wordcount/input/
执行(要求output1目录不能存在):bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/root/mapreduce/wordcount/input/ /user/root/mapreduce/wordcount/output/
列出hdfs文件(-R表示递归的列出):bin/hdfs dfs -ls -R /
xshell上查看:bin/hdfs dfs -cat /user/root/mapreduce/wordcount/output/part-r-00000
启动mapreduce上的jobhistoryserver:sbin/mr-jobhistory-daemon.sh start|stop historyserver


===其他知识:
file:///即File Protocol(本地文件传输协议),File协议主要用于访问Linux本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。 
应 用:要使用File协议,基本的格式如下:file:///文件路径,比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或IE地址栏中键入:file:///f:/flash/1.swf并回车。 


0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。


255.255.255.255为限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。这个地址不能被路由器转发。
127.0.0.1为本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。


机架:对于IT行业,可简单理解为存放服务器的机柜,外形看来不像计算机,而像交换机


DFSClient读取DataNodes元数据(metadata),发给NameNode,Secondary NameNode同步元数据和日志


ApplicationMaster:
ApplicationMasterLauncher
AMLivelinessMonitor
ApplicationMasterService
ApplicationMaster
ApplicationMasterLaunche:AM启动关闭事件处理器,处理launch和cleanup事件,分别对应启动应用和关闭应用
AMLivelinessMonitor:监控类,监控AM存活状态,采用heartbeat的方式,节点过期会触发过期事件
ApplicationMasterService:请求服务处理类,存在于ResourceManager中,服务各个节点上的ApplicationMaster,接收各个AM的注册请求,更新心跳包信息
ApplicationMaster:节点应用管理类,负责管理整个应用的生命周期


===运行原理:
HDFS:
是一个可扩展的分布式文件系统,分布式,有副本,由NameNode,DataNode,SecondaryNameNode构成
块:在HDFS文件系统上数据是以block的方式存储的,默认容量128MB,blk_00001:128MB
快照:基于硬件编程技术的一种,针对内存进行的快速读取技术,常用于硬件开发
NameNode:主节点,存储文件的元数据(文件名,文件目录结构,生成时间,副本数,文件权限,以及每个文件的块列表和块所在DataNode),NameNode的元数据中的一部分存放在内存中的(方便客户端读取,存储,写),在进程(java进程)当中,另一部分存放在本地磁盘(fsimage(namenode启动时生成最新的):镜像文件和edits(启动之后的对文件的操作记录):编辑日志)
DataNode:在本地文件系统存储文件块数据,以及块的校验和,块的长度
SecondaryNameNode:是用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,定期合并fsimage(镜像文件)和edits(编辑日志)成新的fsimage


YARN:
是运行在HDFS上的分布式资源管理框架,在YARN上运行MapReduce或者Spark是Hadoop资源管理器,管理内存,CPU核数,分配调度集群资源,由ResourceManager,NodeManager,Container,ApplicationMaster构成
ResourceManager:管理所有节点(也是所有服务器)上的资源(通过Applications Manager寻找监控NodeManager),处理客户端(Client)请求,启动/监控ApplicationMaster,资源分配(每个节点的资源都放在Container里)与调度,由(收到Client请求就创建)Applications Manager和Resource Scheduler构成
ApplicationMaster:切分数据,为应用程序申请资源,并分配给内部任务,任务监控与容错,由NodeManager在所在节点的Container里创建属于Client请求的特定ApplicationMaster任务,然后该ApplicationMaster对任务进行分析,列出任务划分表再发送给ResourceManager中的Applications Manager,列出资源申请表再发送给ResourceManager中的Resource Scheduler,然后寻找各个节点,请求各个节点里的NodeManager启动这次任务,然后随时与Client,map task,reduce task保持通信,一旦任务完成就上报ApplicationsManager并自动销毁
NodeManager:管理单个节点(也是单个服务器)上的资源,一方面处理来自ResourceManager中的Applications Manager的命令,在所在节点的Container里创建属于Client请求的特定ApplicationMaster任务,另一方面处理来自ApplicationMaster的命令,在所在节点的另一个里Container里创建属于ApplicationMaster请求的Map或Reduce任务
Container:map和reduce任务都在上面运行,封装任务运行环境,CPU,内存等多维资源,环境变量、启动命令等任务运行相关的信息


MapReduce:
是离线计算框架,并行,容错,扩展,简单处理,耗费磁盘,由Map(映射),Shuffle(洗牌),Reduce(规约)构成
Map:并行处理输入数据,将结果数据写到本地磁盘
Shuffle:连接Map和Reduce两个阶段
Reduce:从本地磁盘读取Map结果数据,进行汇总,并随时与ApplicationMaster保持通信,反馈进度,是否出错,是否完成


===其他框架
Sqoop:主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将关系型数据库中的数据导进到Hadoop的HDFS中,也可将HDFS的数据导进到关系型数据库中


Flume:收集日志文件


Oozie:管理调度大量的Map和Reduce任务,是一种Java Web应用程序,它运行在Java servlet容器(Tomcat)中,并用数据库来存储工作流定义和当前运行的工作流实例,包括实例的状态和变量


Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行


Pig:是一种数据流语言和运行环境,描述数据流的语言称为Pig Latin,是高级过程语言,Pig能够让你专心于数据及业务本身,而不是纠结于数据的格式转换以及MapReduce程序的编写。本质是上来说,当你使用Pig进行处理时,Pig本身会在后台生成一系列的MapReduce操作来执行任务


HBase/BigTable:是分布式数据存储系统,是非关系型数据库,是一个稀疏的、分布式的、持久化存储的多维度排序Map,HBase不同于一般的关系数据库,是非结构化数据存储的数据库,基于列的而不是基于行的模式


Zookeeper:是协作框架,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。


Clodera Manager:是一个工具软件,拥有集群自动化安装、中心化管理、集群监控、报警功能,对集群进行管理,如添加、删除节点等操作,监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控,对集群出现的问题进行诊断,对出现的问题给出建议解决方案,对hadoop的多组件进行整合


===默认端口
hdfs监控界面的端口号:50070
yarn的监控界面的端口号:8088
historyserver的监控界面的端口号:19888
垃圾回收配置属性<name>fs.trash.interval</name>
start-dfs.sh、start-yarn.sh
start-all.sh


===其他名词
Apache:简称Apache HTTP Server,是Apache软件基金会的一个开放源码的网页服务器
Hadoop:是一个由Apache基金会所开发的可扩展分布式系统基础架构
GFS/HDFS:是一个可扩展的分布式文件系统,分布式,有副本
MapReduce:是离线计算框架,集群,并行
Nutch/Lunence:是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值