一、Hadoop 介绍
Apache Hadoop 软件库是一个框架,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop 被设计成能够从单台服务器扩展到数以千计的服务器,每台服务器都有本地的计算和存储资源。Hadoop 的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务。
1. Hadoop 生态系统
主要包含以下几部分:
- HDFS——Hadoop 生态圈的基本组成部分是 Hadoop 分布式文件系统(HDFS)。
HDFS是一种分布式文件系统,数据被保存在计算机集群上,HDFS 为 HBase 等工具提供了基础。- MapReduce——Hadoop的主要执行框架是 MapReduce,它是一个分布式、并行处理的编程模型,MapReduce 把任务分为map(映射)阶段和 reduce(化简)。由于 MapReduce 工作原理的特性,Hadoop能以并行的方式访问数据,从而实现快速访问数据。
- Hbase——HBase是一个建立在 HDFS 之上,面向列的 NoSQL 数据库,用于快速读/写大量数据,HBase 使用Zookeeper 进行管理。
- Zookeeper——用于 Hadoop 的分布式协调服务。Hadoop 的许多组件依赖于 Zookeeper,它运行在计算机集群中,用于管理Hadoop集群。
- Pig——它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin),其编译器将Pig Latin翻译成MapReduce程序序列。
- Hive——Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。
- Sqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。
- Flume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。它基于一个简单而灵活的架构,并提供了数据流的流。它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop中。
2. Apache 版本衍化
Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则NameNode HA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性。
二、Hadoop-2.7.3 伪分布安装
Hadoop安装有如下三种方式:
- 单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途;
- 伪分布模式:在单节点上同时启动NameNode、DataNode、JobTracker、TaskTracker、Secondary Namenode等5个进程,模拟分布式运行的各个节点;
- 完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成
由于实验环境的限制,本节课程将讲解伪分布模式安装,并在随后的课程中以该环境为基础进行实验。以下为伪分布式环境下在Ubuntu16中配置Hadoop-2.7.3,该配置可以作为其他Linux系统和其他版本的Hadoop部署参考。
1.(配置从这开始)软硬件环境说明
节点使用Ubuntu16系统,创建了一个ubuntu用户,并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。由于该目录用于安装hadoop等组件程序,用户对ubuntu必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为
ubuntu(chown –R ubuntu:ubuntu /app)。 cd / sudo mkdir /app sudo chown -R ubuntu:ubuntu /app
2. 环境搭建
虚拟机操作系统:Ubuntu 16
JDK:1.8.0_231 64位
Hadoop:2.7.3
2.1 设置hosts文件映射
1.设置IP地址与机器名的映射,设置信息如下:
配置主机名对应的IP地址(如在ubuntu用户下,需要使用sudo命令)
sudo vim /etc/hosts
设置:<IP地址> <主机名> 例如:10.2.68.12 3c79302cbf8e hadoop
2.使用ping命令验证设置是否成功
ping hadoop
(CTRL C)终止
2.2 设置操作系统环境
2.2.1 本实验环境已经安装java
java -version
2.2.2 SSH无密码验证配置
1.开启ssh服务
sudo /etc/init.d/ssh restart
2.生成密钥对
使用ssh-keygen –t rsa命令生成密钥对(命令行提示可以一直enter下一步)
ssh-keygen -t rsa
切换到~/.ssh目录下
复制到实验机cd ~/.ssh
加入授权
cat ./id_rsa.pub >> ./authorized_keys
3.验证ssh连接
此时ssh localhost(hadoop)时,无需输入密码就可以直接登陆
ssh hadoop
3. Hadoop环境搭建
3.1 在/app下创建hadoop目录
mkdir /app/hadoop
3.2 下载并解压hadoop安装包
cd /app/hadoop
可以从以下地址下载hadoop安装包到/app/hadoop路径下:
wget http://i9000.net:8888/sgn/LMS/hadoop/hadoop/hadoop-2.7.3.tar.gz
使用以下命令解压
tar –xzvf hadoop-2.7.3.tar.gz
将安装路径hadoop-2.7.3改名为hadoop
mv hadoop-2.7.3 hadoop
3.3 在hadoop安装目录下创建子目录
cd /app/hadoop/hadoop mkdir tmp mkdir hdfs mkdir hdfs/name mkdir hdfs/data
3.4设置环境变量
1.修改hadoop环境变量
sudo vim /etc/bash.bashrc
按照下图修改环境变量
2.使用source命令重新编译
source /etc/bash.bashrc
3.使用hadoop命令测试
hadoop version
3.5 配置hadoop-env.sh
cd /app/hadoop/hadoop/etc/hadoop vim hadoop-env.sh
修改JAVA_HOME变量的值
3.6 配置core-site.xml(伪分布式安装)
1.使用如下命令打开core-site.xml配置文件
vim core-site.xml
2.在配置文件中,按照如下内容进行配置
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/hadoop/tmp</value> </property> </configuration>
3.7 配置hdfs-site.xml
1.使用如下命令打开hdfs-site.xml配置文件
vim hdfs-site.xml
2.在配置文件中,按照如下内容进行配置
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>/app/hadoop/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/app/hadoop/hadoop/hdfs/data</value> </property> </configuration>
3.8 配置mapred-site.xml
1.使用如下命令打开mapred-site.xml配置文件
mv mapred-site.xml.template mapred-site.xml vim mapred-site.xml
2.在配置文件中,按照如下内容进行配置
<configuration> <property> <name>mapred.job.tracker</name> <value>hadoop:9001</value> </property> </configuration>
3.9 格式化namenode
使用如下命令进行格式化namenode:
hadoop namenode -format
3.10 启动hadoop
cd /app/hadoop/hadoop/sbin
执行启动脚本
./start-all.sh
3.11 用jps检验各后台进程是否成功启动
使用jps命令查看,显示6个进程正确
jps
至此实验结束。
三、其他
编辑模式,dd删除这一行