DataWhale 大数据处理技术组队学习task1
一、大数据概述
1. 大数据时代(详细内容参考参考文章)
2. 大数据的概念(又或者是特点)
- 4V
- 数据量大(Volume)
- 数据来源:可以是计算机、手机,也可以是其他联网设备(与物联网紧密结合)
- 数据类型繁多(Variety)
- 各行各业的数据量都在迅速增长
- 处理速度快(Velocity)
- 为了快速分析海量数据,一般采用集群处理和独特的内部设计
- 价值密度低(Value)
- 与传统数据不同,大数据时代有大量数据并不含有有效信息
- 数据量大(Volume)
3. 大数据的应用:
- 主要是通过将数据与机器学习相结合从而将大数据变为知识或者生产力。大数据是机器学习的基础,机器学习是大数据转换为生产力的必由之路
- 应用举例:信贷风险分析,商品精准推荐…
4. 大数据的关键技术
- 按流程划分:
- 数据采集
- 数据存储和管理
- 数据处理和分析
- 数据安全和隐私保护
- 大数据技术是许多技术的一个集合体,这些技术也并非全部都是新生事务,诸如关系数据库、数据仓库、数据仓库技术(ETL)、 联机分析处理(OLAP)、数据挖掘、数据隐私和安全、数据可视化等已经发展多年的技术。(大数据技术由多种新生技术与已存在的技术结合而成)
二、大数据处理架构Hadoop
1. 概述
1.1 Hadoop简介
- Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。
- 核心
- 分布式文件系统HDFS(Hadoop Distributed File System)
- MapReduce
1.2 特性
- 高可靠性:采用冗余数据存储方式(同样的数据存储多份),即使一个副本发生故障,其他副本也可以保证正常对外提供服务
- 高效性:采用分布式存储和分布式处理两大核心技术,同时能够在节点之间动态地移动数据,并保证各个节点的动态平衡
- 高可扩展性:可以高效稳定地运行在廉价的计算机集群上
- 高容错性:采用冗余存储同时可以自动将失败的任务重新分配
- 成本低:可以高效稳定地运行在廉价的计算机上,同时开源导致项目的软件成本大大降低
- 运行在Linux平台
- 支持多种编程语言:可以使用其他编程语言编写
1.3 应用现状:
- 国外:Yahoo以及facebook是主要用户
- 国内:百度、阿里、腾讯、华为等企业也使用了Hadoop
2. Hadoop的项目架构
-
Common:主要包括FileSystem、RPC和串行化库,它们为在廉价的硬件上搭建云计算环境提供了基本的服务,并为运行在该平台上的软件开发提供了所需的API。
-
Avro:用于数据库序列化的系统,它提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC的功能和简单的动态语言集成功能
-
HDFS:它是针对谷歌文件系统(Google File System,GFS)的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。它可以通过提供高吞吐率来访问应用程序的数据,适合那些具有超大数据集的应用程序,HDFS放宽了可移植操作系统接口的要求,这样可以通过流的形式访问文件系统中的数据,
-
HBase:是一个提供高可靠性、高性能、可伸缩、实时读写和分布式的列式数据库,一般采用HDFS作为其底层数据存储。与一般数据库存在些许不同。其一,HBase是一个适合于非结构化数据存储的数据库;其二,HBase是基于列而不是基于行的存储模式。HBase主要用于需要随机访问、实时读写的大数据(Big Data)
-
Pig:一种数据流语言和运行环境,适合于使用Hadoop和MapReduce的平台来查询大型半结构化数据集,为Hadoop应用程序提供了一种更加接近结构化查询语言(SQL)的接口。最突出的优势是它的结构能够经受住高度并行化的检验
-
Sqoop:可以改进数据的互操作性,主要用来在Hadoop和关系数据库之间交换数据。通过Sqoop,我们可以方便地将数据从MySQL、Oracle、PostgreSQL等关系数据库中导入Hadoop(可以导人 HDFS、HBase或 Hive)、或者将数据从Hadoop导出到关系数据库,使得两者之间的数据迁移变得非常方便。
-
Chukwa:开源的数据收集系统,用于监控和分析大型分布式系统的数据
-
Zookeeper:一个为分布式应用所涉及的开源协调服务,主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序所承担的协调任务
3. Hadoop伪分布式安装
3.1 创建Hadoop用户
3.2 Java安装:
- 报错:sudo: vim:找不到命令
- 解决方案:sudo apt-get install vim
- Java安装成功
3.3 SSH登陆权限设置
- 遇到问题:
- 解决方案:sudo apt-get install openssh-serve
- 新的问题:用户不在sudoers中
- 解决方案:更换为root,并修改配置(详情参考自这个文件)
- 新的问题:su root认证失败
- 解决方案:更改密码,再重新改为root
3.4 Hadoop单机版安装:
- 实验结果:
3.5 伪分布式安装
- vim /opt/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- vim /opt/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- vim /opt/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
- vim /opt/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
- 格式化分布式文件系统
- 切换至hadoop用户下(su datawhale)
- 初始化文件系统(hdfs namenode -format)
- 出现问题:Command ‘hdfs’ not found, did you mean
- 原因:没有配置路径
- 解决方案:
- sudo vi /etc/profile
- 在文件末尾添加路径:export PATH=/opt/hadoop/bin:$PATH # 路径为自己设备hadoop所在路径
- source /etc/profile #更新环境
- 启动Hadoop
- /opt/hadoop/sbin/start-all.sh
- jps查看所有java进程
- /opt/hadoop/sbin/start-all.sh
3.6 测试HDFS集群以及MapReduce任务程序
-
利用Hadoop自带的
WordCount
示例程序进行检查集群,并在主节点上进行如下操作,创建执行MapReduce任务所需的HDFS目录:hadoop fs -mkdir /user hadoop fs -mkdir /user/datawhale hadoop fs -mkdir /input
-
创建测试文件,并输入Hello world!:
vim /home/datawhale/test
-
将测试文件上传到Hadoop HDFS集群目录
hadoop fs -put /home/datawhale/test /input
-
执行wordcount程序
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /out
-
查看执行结果
hadoop fs -ls /out
-
查看具体的输出结果
hadoop fs -text /out/part-r-00000