big data介绍
bigdata:
0 分布式
由分布在不同主机上的进程协同在一起,才能构成整个应用。
(同一台主机上的不用进程,他们之间的交互也属于分布式)
1 海量数据
- 1 bit = 1 位
- 1 Byte = 8 bit
- 1 KB = 1024 B
- 1 M = 1024 K
- 1 G = 1024 M
- 1 T = 1024 G
- 1 P = 1024 T
- 1 E = 1024 P
- 1 Z = 1024 E
- 1 Y = 1024 Z
2 存储(大数据需要解决的问题1)
- 分布式存储(分割开来存储)
- dfs (distributed file system 分布式文件系统)
3 计算 (大数据需要解决的问题2)
- 分布式计算
- mapreduce : map(映射) + reduce(化简)
4 hadoop (大象)
- 创始人Doug Cutting
- Apache 下开源软件
- 是一个计算框架 特点:
- 分布式(将众多计算机节点资源协同起来 来完成计算工作)
- 可靠性(单个节点的故障不会影响整个系统的运行)
- 可伸缩(任何节点的增加和删除都不会影响整个系统的运行 即可随时增加或减少节点)
- hadoop擅长领域:搜索引擎、海量数据存储
Hadoop 里面的几个点:
- 介绍
是分布式计算大规模数据集框架,使用简单编程模型,可从单个服务器扩展到几千台主机,每台机器都提供了本地计算和存储,不需要使用硬件来获得高可用性,类库在应用层处理检测并处理故障,因此在集群之上获得HA服务
HDFS
hadoop distributed file system (GFS)
hadoop 分布式文件系统去IOE
(IBM + Oracle + EMC)
(用廉价设备)MapReduce
MR
(映射和化简,编程模型)
大数据广泛应用:
- 推荐系统
(爱奇艺推荐 京东推荐 --> 精准营销) - 大数据是为企业创造价值的,它不像其他的软件,是企业的成本、负担。
大数据 4V(4个特征):
- Volumn 题量大
(上P级的数据 一般是日志数据 ) - Variaty 样式多
(结构化数据 ) - Velocity // 速度快
- Valueless // 价值密度低
大数据面试考核考很多Java基础!!!
推荐看的书籍:
目前重点需要看的书:
比较前沿的东西 就别指望有中文版 翻译过来之后可能就晚了 而且翻译的质量有的很差! 要去看英文原版
(要掌握计算机专业英语)
环境搭建
hadoop的安装:
- 安装jdk
- JAVA_HOME
- PATH
- 安装hadoop
- tar hadoop.tar.gz
- 配置HADOOP_HOME
- PATH
hadoop 包含4个模块:
- Hadoop Common: The common utilities that support the other Hadoop modules.
(支持其他模块的工具模块 为其他模块提供功能) - Hadoop Distributed File System (HDFS™):
A distributed file system that provides high-throughput access to application data.
(一个对应用层数据提供高吞吐量访问的分布式文件系统,解决存储问题) - Hadoop YARN:
(Yet Another Resource Negotiator,另一种资源协调者,是资源调度框架)
A framework for job scheduling and cluster resource management.
(作业调度和集群资源管理的框架,解决分布式计算问题) - Hadoop MapReduce:
A YARN-based system for parallel processing of large data sets.
(一个基于yarn系统的对大数据集进行并行处理的编程模型技术)
(编程模型 map阶段 + reduce阶段)
hadoop至少有5个进程:
HDFS对应的进程:
- NameNode 名称结点(简称NN)
- 存放目录
- 是核心结点,最重要
- 要登录到远程机器上,把其进程启动起来
- DataNode 数据结点 (简称DN)
- 存放数据
- SecondaryNameNode 辅助名称结点 (简称2NN)
- 存放备份目录
YARN对应的进程:
- ResourceManager 资源管理器(简称RM)
- NodeManager 结点管理器 (简称NM)
配置Hadoop:
-
Standalone (or local) mode 独立(本地)模式
- 默认就是本地模式(不用配置)
- 没启动任何java进程
- 所有的程序运行在一个jvm中,不需要启动hadoop进程,应用的文件系统就是本地文件系统 (查看文件系统命令:hadoop fs -ls)
- There are no daemons running and everything runs in a single JVM. Standalone mode is suitable for running MapReduce programs during development, since it is easy to test and debug them.(用于测试和开发环境)
-
Pseudodistributed mode 伪分布式模式
完全类似于完全分布式,但是只有一个结点- 配置SSH(安全登录)
名称结点NN要登录到远程机器上 要启动其进程 无密登录-->方便- 安装ssh:sudo apt-get install ssh
- 生成密钥对:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
- 查看生成的公私密钥:cd ~/.ssh
- 导入公钥数据到授权库中:
- cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 登录到localhost:ssh localhost
- 想从A机想登录到B机器上 就要把A的公钥传给B:在B机上nc -l 8888 > id_rsa.pub.s100(其中s100是A机器的名字) 在A机上:nc s101 8888 < id_rsa.pub(其中s101是B机器的名字) 然后在B机器上查看id_rsa.pub.s100 已在B中 在B中将id_rsa.pub.s100导入其授权库中:cat id_rsa.pub.s100 >> authorized_keys 然后在A机器中 ssh s101 登录成功!
- 格式化hdfs文件系统 (只格式化一次就好,不需要每次都格式化):hadoop namenode -format
- 启动所有进程:start-all.sh
- 用jps命令查看下所有进程(RM NM NN DN 2NN 如果进程数不对,杀死所有进程:stop-all.sh )
- 创建文件系统 hadoop fs -mkdir -p /user/ubuntu/data(ubuntu是用户名) 然后查看文件夹:hadoop fs -ls -R(或 hadoop fs -ls)
- 配置SSH(安全登录)
安装ssh注意:
1 禁用wifi
2 关闭防火墙 (windows 控制面板中找)
3 client 能够访问外网 (ping www.baidu.com)
4 修改ubuntu的软件源 [/etc/apt/sources.list]
5 安装ssh:sudo apt-get install ssh
7 查看进程,是否启动了ssh服务:ps -Af | grep ssh
8 ...
其他注意:
在临时目录下 别关机 别重启 重启必须重新格式化
启动所有进程:
start-all.sh 后 用jps命令查看下所有进程 若么没有5个进程(RM NM NN DN 2NN) 则说明启动失败 失败原因要去日志里面找 --> (路径:/hadoop/logs)
- Fully distributed mode 完全分布式模式
Hadoop doesn’t actually distinguish between pseudodistributed and fully distributed modes- 准备5台客户机
- 安装jdk
- 配置java相关环境变量(java_home、path)
- 安装hadoop
- 配置hadoop相关环境变量(hadoop_home、path)
- 安装ssh
- 配置文件
- 在集群上分发以上3个文件
目标:
scp :
基于ssh的 安全的 远程文件复制程序
命令:scp -r /soft/* ubuntu@s101:/soft (s101是目标计算机名称)
缺点:使用scp 符号连接格式 转变成了 文件格式
(要避开此缺点的坑 请看下面的 rsync 命令)
rsync :
命令 man rsync | more 查看 rsync 帮助说明:
- 远程同步工具 主要用于备份和镜像
- 支持连接 设备等
- 速度快 避免复制相同内容的文件数据
命令rsync /etc/environment root@s101:/etc 复制环境变量
命令rsync -rl /soft/* ubuntu@s101:/soft 执行复制(其他参数请看帮助提示)
使用webui访问hadoop hdfs:
1 hdfs webui:http://localhost:50070/
2 data node : http://localhost:50075
3 2NN : http://localhost:50090
附图:
启动所有进程、查看所有进程:
注意进程关闭顺序: