您的位置:首页 > 大数据 > Hadoop

大数据技术之Hadoop(入门)

2019-05-08 20:00 281 查看

大数据技术之Hadoop(入门)

从Hadoop框架讨论大数据生态

Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
GFS ====> HDFS
Map-Reduce ====> MR
BigTable ====> HBase

Hadoop的优势

高可靠性:因为Hadoop假设计算元素和存储会出现故障,它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。

Hadoop组成


Hadoop HDFS:Hadoop Distributed File System一个高可靠、高吞吐量的分布式文件系统。
Hadoop MapReduce:一个分布式的离线并行计算框架。
Hadoop YARN:作业调度与集群资源管理的框架。
Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。

HDFS架构概述

YARN架构概述

ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度
NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令
ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错
Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息

MapReduce架构概述

MapReduce将计算过程分为两个阶段:Map和Reduce
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总

Hadoop运行环境搭建

环境配置

关闭防火墙

关闭防火墙:systemctl stop firewalld.service
禁用防火墙:systemctl disable firewalld.service
查看防火墙:systemctl status firewalld.service

关闭Selinux:vi /etc/selinux /config
将SELINUX=enforcing改为SELINUX=disabled

修改IP

善用Tab键
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes

IPADDR=192.168.X.51
GATEWAY=192.168.X.2
DNS1=8.8.8.8
DNS2=8.8.4.4
NETMASK=255.255.255.0
X代表本地IP的第三个,即Windows上的IP
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
重启网卡:servie network restart

修改主机名

hostnamectl set-hostname 主机名

IP和主机名关系映射

vi /etc/hosts
192.168.x.10 CentOS
192.168.x.11 CentOS1
192.168.x.12 CentOS2
192.168.x.13 CentOS3

在windows的C:\Windows\System32\drivers\etc路径下找到hosts并添加
192.168.x.10 CentOS
192.168.x.11 CentOS1
192.168.x.12 CentOS2
192.168.x.13 CentOS3
注意:不知何故,Windows里的hosts修改一段时间后会被注释掉,可能是360杀毒软件的原因,使用Notepad++将注释#号去掉即可。

连接Secure CRT & Xshell

输入IP、用户名和密码

安装jdk

卸载现有jdk

(1)查询是否安装java软件:
 rpm -qa|grep java
(2)如果安装的版本低于1.7,卸载该jdk:
 rpm -e 软件包名字

在/opt目录下创建两个子文件

mkdir /opt/module /opt/software
解压jdk到/opt/module目录下
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

配置jdk环境变量

vi /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

测试jdk安装成功

java -version
java version “1.8.0_144”

Hadoop运行模式

伪/完全分布式部署Hadoop

SSH无密码登录

生成公钥和私钥:ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登录的目标机器上

ssh-copy-id 主机名1
ssh-copy-id 主机名2
ssh-copy-id 主机名3
注:在另外两台机器上分别执行,共执行9遍

.ssh文件夹下的文件功能解释

(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无秘登录服务器公钥

配置集群

(一)集群部署规划:

CentOS CentOS1 CentOS2
HDFS NameNode SecondaryNameNode DataNode DataNode DataNode
YARN ResourceManager NodeManager NodeManager NodeManager

(二)配置文件:
在core-site.xml中:

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名1:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.X.X/data/tmp</value>
</property>

在hdfs-site.xml中:

<!--数据冗余数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary的地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>主机名1:50090</value>
</property>
<!--关闭权限-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

在yarn-site.xml中:

<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主机名1</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天(秒) -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

在mapred-site.xml中:

<!-- 指定mr运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>主机名1:10020</value>
</property>
<!--历史服务器页面的地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>主机名1:19888</value>
</property>

另外,hadoop-env.shyarn-env.shmapred-env.sh(分别在这些的文件中添加下面的路径)
export JAVA_HOME=/opt/module/jdk1.8.0_144(注:是自己安装的路径)
slaves设置自己的主机名:CentOS、CentOS1、CentOS2

格式化Namenode:

hdfs namenode -format

启动集群得命令:

Namenode的主节点:sbin/start-dfs.sh
Yarn的主节点:sbin/start-yarn.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。

scp文件传输

实现两台远程机器之间的文件传输(CentOS主机文件拷贝到CentOS1主机上)
scp -r [文件] 用户@主机名:绝对路径
注:伪分布式是一台、完全分布是三台

完全分布式

步骤:
1)克隆2台客户机(关闭防火墙、静态ip、主机名称)
2)安装jdk
3)配置环境变量
4)安装hadoop
5)配置环境变量
6)安装ssh
7)配置集群
8)启动测试集群
注:此配置直接使用虚拟机克隆伪分布式两台即可

自带官方wordcount案例

随意上传一个文本文件
上传命令:hadoop fs -put 文件名 /
执行命令:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.X.X.jar wordcount /入 /出
命令解析:
hadoop jar 路径的jar包 全类名 输入路径 输出路径
查看结果:
hadoop fs -cat 路径

Hadoop启动和停止命令

以下命令都在$HADOOP_HOME/sbin下,如果直接使用,记得配置环境变量

功能 命令
启动/停止历史服务器 mr-jobhistory-daemon.sh start
启动/停止总资源管理器 yarn-daemon.sh start
启动/停止节点管理器 yarn-daemon.sh start
启动/停止 NN 和 DN start
启动/停止 RN 和 NM start
启动/停止 NN、DN、RN、NM start
启动/停止 NN hadoop-daemon.sh start
启动/停止 DN hadoop-daemon.sh start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: