大数据(big data),是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。
大数据的4V特点:Volume(大量)、Velocity(高速)、 Variety(多样)、Value(价值)。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
目录:
一、Hadoop环境安装流程
Hadoop用户创建
JDK安装
SSH免密码登录
集群配置
二、Hadoop组件
HDFS
MapReduce原理
一、Hadoop环境安装流程
linux下面要操作文件,必须得有权限,jdk配置需要一下命令
sudo password root
su 密码
创建hadoop组,并在组内创建hadoop用户
sudo addgroup hadoop
sudo adduser -ingroup hadoop hadoop
解压jdk,配置环境变量
第一种:sudo gedit /src/profile
第二种:sudo gedit /etc/enviroment
打开之后,复制下列代码
export JAVA_HOME=/usr/lib/jvm/ (jdk路径名)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
测试JDK
输入java -version测试环境
SSH 为建立在应用层和传输层基础上的安全协议
安装SSH服务
因为hdfs通过ssh控制节点之间的通讯,所以ssh一定要设置。
sudo apt-get install ssh openssh-server
成功流程:
hadoop@master 用户下 sudo gedit /home/sudoers
为用户添加权限
hadoop@master 用户下 sudo gedit /etc/hosts
添加客户机/服务器
ssh-keygen 获取密钥
cd .ssh/ 进入.ssh目录下
cat id_rsa.pub >> authorized_keys 将密钥写入公钥
cat authorized_keys 查看公钥
sudo scp authorized_keys hadoop@slave03:/home/hadoop/.ssh
将公钥发给客户机/3号服务器
ssh slave03 链接客户机/服务器
解压hadoop安装包
将hadoop文件的权限添加给hadoop组的hadoop用户
sudo chown -R hadoop:hadoop hadoop
设置linux系统的hadoop环境变量(同上JDK环境配置)
export JAVA_HOME=/opt/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:
$HADOOP_HOME/bin:$PATH
集群/分布式模式需要修改 etc/hadoop 中的5个配置文件,后四个文件可点击查看官方默认设置值,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
1、文件 slave
cd /usr/local/hadoop/etc/hadoop
sudo gedit slaves
将原来 localhost 删除,把所有Slave的主机名和maste主机名写上,每行一个。
2、文件 core-site.xml ,加入如下内容:
<property>
<name>fs.defaultFS</name> <value>hdfs://Master:9000</value></property><property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporarydirectories.</description>
</property>
3、文件hdfs-site.xml,因为只有一个slave01,所以dfs.replication的值设为2(包括本机)。
<property>
<name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value>
</property><property>
<name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property><property>
<name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property><property>
<name>dfs.replication</name>
<value>2</value>
</property>
4、文件mapred-site.xml,这个文件不存在,首先需要从模板中复制一份:
cp mapred-site.xml.template mapred-site.xml
然后配置修改如下:
<property>
<name>mapreduce.framework.name</name> <value>yarn</value>
</property>
5、文件yarn-site.xml:
<property>
<name>yarn.resourcemanager.hostname</name> <value>Master</value>
</property><property>
<name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value>
</property>
配置好后,将 master 上的 Hadoop 文件复制到各个节点上。
为了确保配置的执行,建议在切换到集群模式前先删除之前的临时文件。
执行代码如下:
cd /usr/local
rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
scp -r ./hadoop hadoop@slave01:/etc/local/
在slave01上执行:
sudo chown -R hadoop:hadoop /usr/local/hadoop
然后再master中启动hadoop
cd /usr/local/hadoop/
# 首次运行需要执行初始化,后面不再需要
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
通过命令jps可以查看各个节点所启动的进程。
即:配置成功!
二、Hadoop组件
HDFS涉及的基本概念
-块(Block)
-NameNode
-DataNode
HDFS的特点:
1、数据冗余,硬件容错;
2、流式的数据访问:一次写入,多次读取;
一旦写入就不会被修改,只能删除;
3、存储大文件;
适用性和局限性:
1、适合数据批量读写,吞吐量高;不适合交互式应用,
低延迟很难满足;
2、适合一次写入多次读取,顺序读写;
不支持多用户并发写相同文件。
MapReduce主要核心思想: 分而治之