- 第二部分:HDFS
- 第三部分:MapReduce
- 第四部分:项目案例实战
《Hadoop》
Hadoop常用命令
命令 | 说明 |
jps | 查看进程 |
service iptables stop | 关闭防火墙 |
start-all.sh | 启动Hadoop服务 |
1、Hadoop介绍
Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。 Hadoop框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储
1.1 Hadoop2.x的组成
MapReduce - 计算
Yarm - 资源调度
HDFS - 数据存储
Common - 辅助工具
1.1.2 MapReduce
MapReduce是一种并行编程模型,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。 MapReduce程序可在Apache的开源框架Hadoop上运行.
1.1.3 HDFS
Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS),并提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署在低成本的硬件。提供了高吞吐量的应用数据访问,并且适用于具有大数据集的应用程序.除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:
- Hadoop 通用:这是Java库和其他Hadoop组件所需的实用工具.
- Hadoop YARN:这是作业调度和集群资源管理的框架
1.2 Hadoop如何工作?
建立重配置,处理大规模处理服务器这是相当昂贵的,但是作为替代,可以联系许多普通电脑采用单CPU在一起,作为一个单一功能的分布式系统,实际上,集群机可以平行读取数据集,并提供一个高得多的吞吐量。此外,这样便宜不到一个高端服务器价格。因此使用Hadoop跨越集群和低成本的机器上运行是一个不错不选择.
Hadoop运行整个计算机集群代码。这个过程包括以下核心任务由 Hadoop 执行
- 数据最初分为目录和文件。文件分为128M和64M(128M最好)统一大小块.
- 然后这些文件被分布在不同的群集节点,以便进一步处理。
- HDFS,本地文件系统的顶端﹑监管处理。
- 块复制处理硬件故障。
- 检查代码已成功执行。
- 执行发生映射之间,减少阶段的排序。
- 发送排序的数据到某一计算机。
- 为每个作业编写的调试日志.
1.3 Hadoop优势
- Hadoop框架允许用户快速地编写和测试的分布式系统。有效并在整个机器和反过来自动分配数据和工作,利用CPU内核的基本平行度。
- Hadoop不依赖于硬件,以提供容错和高可用性(FTHA),而Hadoop库本身已被设计在应用层可以检测和处理故障。
- 服务器可以添加或从集群动态删除,Hadoop可继续不中断地运行。
- Hadoop的的另一大优势在于,除了是开源的,因为它是基于Java并兼容所有的平台
1.4 Hadoop设计思想
- 分块存储 每一个块就叫block
怎么分合适? 1T 2T
hadoop2.x中默认的切分的块的大小128M,Hadoop1.x为64M
一个文件不足128M也会单独存一个块,块的大小就是存储数据的实际大小 - hdfs中默认块的存储采用备份机制,默认的备份个数是3个
- 相同数据块的副本一定存储在不同的节点上
- 备份越多越好吗?
副本越多,数据安全性越高,占用过多的存储资源,维护变得困难
2、Linux上安装Hadoop2.x(伪分布式搭建)
2.1 Hadoop操作模式
下载 Hadoop 以后,可以操作Hadoop集群以以下三个支持模式之一:
- 本地/独立模式:下载Hadoop在系统中,默认情况下之后,它会被配置在一个独立的模式,用于运行Java程序.
- 模拟分布式模式:这是在单台机器的分布式模拟。Hadoop守护每个进程,如 hdfs, yarn, MapReduce 等,都将作为一个独立的java程序运行。这种模式对开发非常有用。
- 完全分布式模式:这种模式是完全分布式的最小两台或多台计算机的集群。
2.2 Linux下配置Java
1、下载解压好jdk以后,创建文件:
vi /etc/profile.d/java.sh
2、写入:
JAVA_HOME=/usr/soft/jdk1.8.0_144
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export JAVA_HOME PATH CLASSPATH
3、执行命令:
source /etc/profile.d/java.sh
4、检查是否安装成功:
java -version
2.3 Linux下配置Hadoop
安装Hadoop之前必须安装好Java
2.3.1 解压安装
1、下载解压好Hadoop以后,创建文件:
vi /etc/profile.d/hadoop.sh
2、写入:
HADOOP_HOME=/usr/soft/hadoop
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME PATH
3、执行命令:
source /etc/profile.d/hadoop.sh
4、检查是否安装成功:
hadoop version
2.3.2 配置 搭建伪分布式
注意:修改配置文件可以用 editplus/notpad 远程连接修改
2.3.2.1 配置hadoop的相关配置文件
修改 /soft/hadoop/etc/hadoop
目录下的文件
1、修改 core-site.xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
</configuration>
这里要能使用主机名,还得添加一个映射,不然系统是找不到的。
# 查看/修改主机名
vi /etc/sysconfig/network
或者
localhost
# 打开后文件如下:
NETWORKING=yes
HOSTNAME=虚拟机名
# 添加映射
vi /etc/hosts
在文件末尾添加一句:
ip地址 虚拟机名
# 测试是否添加成功:
ping 主机名
2、修改 hdfs-site.xml 文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<!--这里的1表示备份文件的数量为1,默认是3,这里因为是学习Hadoop所以设置成1-->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
3、修改 mapred-site.xml 文件
将mapred-site.xml.template 复制一份 改名为 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、修改 yarn-site.xml 文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.3.2.2 安装SSH - 免登录协议
# 1、安装
yum -y install openssh-clients openssh-server
# 2、生成公钥和私钥:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa (注意 p是大写)
# 3、进入目录
cd ~/.ssh
# 4、将公钥 导入到秘钥库(其实就是个复制文件)
cp id_rsa.pub authorized_keys
# id_rsa.pub - 公钥
# 5、测试
ssh localhost
# 如果不用再输入密码了 则成功
# 退出
exit
2.3.2.3 启动hadoop
# nameNode格式化
hadoop namenode -format
# 这里格式化的是元数据
# 启动hadoop进程
start-all.sh
# 查看进程
jps
有以下五个进程说明搭建成功
1412 NameNode
1910 NodeManager
1499 DataNode
1676 SecondaryNameNode
1821 ResourceManager
2.3.2.4 在电脑上访问Hadoop
首先要关闭防火墙
service iptables stop
在浏览器地址栏中输入:
ip地址:50070
ip地址:8088
进入看到Hadoop的页面即可。
2.3.3 其他问题
1、解决‘yum官方停止支持’的问题
执行如下命令:
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
2、如果ssh连接出现The authenticity of host can’t be established的问题
修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
在最后面添加:
StrictHostKeyChecking no UserKnownHostsFile /dev/null
3、Windows上安装Hadoop
目的: 为了操作Linux上的Hadoop(Windows上需要有jdk和Hadoop)
步骤:
- 安装jdk
- 安装Hadoop
- 添加环境变量
HADOOP_HOME
值:你的Hadoop安装的路径
- 在path变量中添加
%HADOOP_HOME%/bin
- 测试
hadoop version
出现版本信息即安装成功
安装可能会出现的问题:
如果你的jdk安装在C:\Program Files
或者D:\Program Files
目录下,就会报错:
打开编辑hadoop-2.7.3\etc\hadoop\hadoop-env.cmd
文件:
- jdk在
C:\Program Files
目录下的话,因为Program Files
中间有空格会报错,将其改成PROGRA~1
即可。 - jdk在
D:\Program Files
目录下的话,则必须将jdk复制出来(建议和Hadoop放在一个目录下)然后再修改hadoop-env.cmd
即可。