Hadoop基础
大数据技术之Hadoop(入门)
一 大数据概论
预科内容
二 从Hadoop框架讨论大数据生态
n 名字起源
u 该项目的创建者,Doug Cutting解释Hadoop的得名 :“这个名字是我孩子给一个棕黄色的大象玩具命名的
u
n 项目起源
u Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发
n Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
u GFS ====> HDFS
u Map-Reduce ====> MR
u BigTable ====> HBase
Ø Hadoop的优势
n 高可靠性:
因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
n 高扩展性:
在集群间分配任务数据,可方便的扩展数以千计的节点。
n 高效性:
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
n 高容错性:
自动保存多份副本数据,并且能够自动将失败的任务重新分配。
Ø Hadoop组成
n Hadoop HDFS:Hadoop Distributed File System
l 一个高可靠、高吞吐量的分布式文件系统。
n Hadoop MapReduce:
l 一个分布式的离线并行计算框架。
n Hadoop YARN:
l 作业调度与集群资源管理的框架。
n Hadoop Common:
l 支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。
Ø HDFS架构概述
Ø YARN架构概述
n ResourceManager(rm):
处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度
n NodeManager(nm):
单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令
n ApplicationMaster:
数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错
n Container:
对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
Ø MapReduce架构概述
- MapReduce将计算过程分为两个阶段:Map和Reduce
n Map阶段并行处理输入数据
n Reduce阶段对Map结果进行汇总
三 Hadoop运行环境搭建
环境配置
Ø 关闭防火墙
n 关闭防火墙:systemctl stop firewalld.service
n 禁用防火墙:systemctl disable firewalld.service
n 查看防火墙:systemctl status firewalld.service
n 关闭Selinux:vi /etc/selinux /config
n 将SELINUX=enforcing改为SELINUX=disabled
Ø 修改IP
n 善用Tab键
n vi /etc/sysconfig/network-scripts/ifcfg-ens33
l BOOTPROTO=static
l ONBOOT=yes
l
l IPADDR=192.168.X.51
l GATEWAY=192.168.X.2
l DNS1=8.8.8.8
l DNS2=8.8.4.4
l NETMASK=255.255.255.0
n vi /etc/resolv.conf
l nameserver 8.8.8.8
l nameserver 8.8.4.4
重启网卡:servie network restart
Ø 修改主机名
n hostnamectl set-hostname 主机名
Ø IP和主机名关系映射
n vi /etc/hosts
192.168.1.51 bigdata111
192.168.1.52 bigdata112
192.168.1.53 bigdata113
n 在windows的C:\Windows\System32\drivers\etc路径下找到hosts并添加
192.168.1.51 bigdata111
192.168.1.52 bigdata112
192.168.1.53 bigdata113
Ø 连接Secure CRT & Xshell
输入IP、用户名和密码
Ø 在opt目录下创建文件(此步可选)
n 创建itstar用户
l adduser itstar
l passwd itstar
n 设置itstar用户具有root权限
l vi /etc/sudoers 92行 找到root ALL=(ALL) ALL
l 复制一行:itstar ALL=(ALL) ALL
Ø 安装jdk
n 卸载现有jdk
(1)查询是否安装java软件:
rpm -qa|grep java
(2)如果安装的版本低于1.7,卸载该jdk:
rpm -e 软件包名字
n 在/opt目录下创建两个子文件
mkdir /opt/module /opt/software
n 解压jdk到/opt/module目录下
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
n 配置jdk环境变量
vi /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
n 测试jdk安装成功
l java -version
l java version "1.8.0_144"
四 Hadoop运行模式
伪/完全分布式部署Hadoop
n SSH无密码登录
n 生成公钥和私钥:ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
n 将公钥拷贝到要免密登录的目标机器上
u ssh-copy-id 主机名1
u ssh-copy-id 主机名2
u ssh-copy-id 主机名3
注:在另外两台机器上分别执行,共执行9遍
n .ssh文件夹下的文件功能解释
(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无秘登录服务器公钥
n 配置集群(表格版)
1) 集群部署规划:
|
bigdata111 |
bigdata112 |
bigdata113 |
HDFS
|
NameNode SecondaryNameNode DataNode |
DataNode |
DataNode |
YARN |
ResourceManager NodeManager |
NodeManager |
NodeManager |
2) 配置文件:
文件 |
配置 |
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.sh、yarn-env.sh、mapred-env.sh(分别在这些的文件中添加下面的路径)
export JAVA_HOME=/opt/module/jdk1.8.0_144(注:是自己安装的路径) |
|
slaves |
bigdata111、bigdata112、bigdata113(自己设置的主机名) |
n 格式化Namenode:
hdfs namenode -format
n 启动集群得命令:
Namenode的主节点:sbin/start-dfs.sh
Yarn的主节点:sbin/stop-yarn.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
n scp文件传输
实现两台远程机器之间的文件传输(bigdata112主机文件拷贝到bigdata113主机上)
scp -r [文件] 用户@主机名:绝对路径
注:伪分布式是一台、完全分布是三台
n 完全分布式
步骤:
1)克隆2台客户机(关闭防火墙、静态ip、主机名称)
2)安装jdk
3)配置环境变量
4)安装hadoop
5)配置环境变量
6)安装ssh
7)配置集群
8)启动测试集群
注:此配置直接使用虚拟机克隆伪分布式两台即可
Ø 自带官方wordcount案例
n 随意上传一个文本文件
l 上传命令:hadoop fs -put 文件名 /
l 执行命令:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.X.X.jar wordcount /入 /出
n 命令解析:
hadoop jar 路径的jar包 全类名 输入路径 输出路径
n 查看结果:
hadoop fs -cat 路径
Hadoop启动和停止命令:
以下命令都在$HADOOP_HOME/sbin下,如果直接使用,记得配置环境变量
启动/停止历史服务器 |
mr-jobhistory-daemon.sh start|stop historyserver |
启动/停止总资源管理器 |
yarn-daemon.sh start|stop resourcemanager |
启动/停止节点管理器 |
yarn-daemon.sh start|stop nodemanager |
启动/停止 NN 和 DN |
start|stop-dfs.sh |
启动/停止 RN 和 NM |
start|stop-yarn.sh |
启动/停止 NN、DN、RN、NM |
start|stop-all.sh |
启动/停止 NN |
hadoop-daemon.sh start|stop namenode |
启动/停止 DN |
hadoop-daemon.sh start|stop datanode |