Hadoop 学习笔记一 基础知识及常用命令

友情提示:更多有关大数据、人工智能方面技术文章请关注博主个人微信公众号:高级大数据架构师

了解Hadoop

简介

 Hadoop目前属于Apache基金会,是针对海量数据处理的理想工具。我的学习教材主要是Hadoop权威指南(中文版)。 
 Hadoop起源于Nutch,在Yahoo的帮助下,Nutch的分布式运算这部分被独立出来,命名为Hadoop。Hadoop克隆了Google运行系统的主要框架,包括文件系统HDFS、计算架构MapReduce及结构化数据处理的HBase等。 
Hadoop最核心的设计就是HDFS和MapReduce 
Hadoop的知识体系: 
http://lib.csdn.net/base/20/structure 
Hadoop生态: 
这里写图片描述

hadoop文档地址: 
http://hadoop.apache.org/docs/r1.0.4/cn/index.html

工作原理

 海量数据处理的一重要问题是当前数据访问速度比较慢,一个1T的硬盘要读取整体磁盘花费的时间可能需要2个半小时以上。为了提高访问速度,一个有效的方式是并行访问多块硬盘,让数据冗余放置。要解决的问题是:

  • 问题一、硬件故障:解决方法,复制冗余放置数据。
  • 问题二、数据合并

    • 海量数据存储 HDFS实现
    • 数据分析由MapReduce实现
    • 非结构化数据收集处理——Fuse、WebDAV、Chukwa、Flume、Scribe。
    • 数据导入HDFS中,RDBSM也可以加入到HDFS——HHO、Sqoop。
    • 数据处理还可以使用Pig Hive Jaql。
    • 让数据可见——Drilldown、Intellicus。
    • 用高级语言管理你的任务流——Oozie、Cascading。
    • Hadoop自己监控管理工具——Hue、Karmasphere、Eclipse plugin、Cacti、Ganglia。
    • 数据序列化处理与任务调度——Avro、ZooKeeper。
    • 构建在Hadoop上层的服务——Mahout、Elastic map reduce。
    • OLTP存储系统——Hbase。
    • 基于Hadoop的实时分析——Impala。

关系型数据库与MapReduce比较:

项目关系型数据库MapReduce
数据大小GBPB
访问交互型和批处理批处理
更新多次读写一次写入多次读取
结构静态模式动态模式
集成度
伸缩性非线性线性
结构化数据数量结构化数据可以有效处理大结构化数据

Hadoop常用项目

  • Hive 基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整 SQL 查询功能,可以将SQL语句转换为MapReduce任务进行运行。
  • Pig 基于Hadoop的大规模数据分析平台。
  • Mahout 提供一些可扩展的机器学习领域经典算法的实现。
  • Flume Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合、传输的系统。
  • Sqoop 将Hadoop和关系型数据库中的数据相互转移的工具,可以将关系型数据库中的数据导入Hadoop的HDFS中。
  • Oozie JavaWeb应用程序,运行Tomcat中,并使用数据库来存储工作流。
  • ZooKeeper 针对大型分布式系统的可靠协调系统。
  • Impala 采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口。

Hadoop安装方式

  • 单机模式:安装简单
  • 伪分布式模式 :单节点上同时启动NameNode、DataNode、JobTracker、TaskTracker、Secondary Namenode等5个进程 , 模拟分布式运行的各个节点。
  • 完全分布式模式

常用命令

格式化namenode

hdfs namenode -format
  • 1

*列出文件

hdfs dfs -ls /
  • 1

修改hdfs权限

hdfs dfs -chmod -R 755 /
  • 1

修改所有者

hdfs dfs -chown -R larry /
  • 1

解除安全模式

hdfs dfsadmin -safemode leave
  • 1

改变文件所属组

hdfs dfs -chgrp [-R] GROUP URI
  • 1

这里也记录了一部分命令: 
http://blog.csdn.net/xundh/article/details/50905100#t30

Hadoop 安全问题

认证优先级

user获取 
优先从kerberos获取(kerberos模式); 
从系统HADOOP_USER_NAME变量获取; 
从java属性HADOOP_USER_NAME获取; 
获取操作系统当前用户 
group获取 
从定义的group映射关系获取hadoop.user.group.static.mapping.overrides; 
从配置的group映射 类获取(hadoop.security.group.mapping); 
从系统groups user获取

如果出现: 
这里写图片描述 
Access denied for user hadoop.Superuser privilege is required 
这时可以看看

echo $HADOOP_USER_NAME
vi ~/bash_profile
  • 1
  • 2
  • 3
export HADOOP_USER_NAME=root
  • 1
source ~/bash_profile
  • 1

这样就把当前用户切换为root了。

Hadoop是一个开源的分布式计算框架,可用于大数据的存储和处理。它采用了分布式文件系统(HDFS)和分布式计算框架(MapReduce),能够将大数据分割成小的数据块,并在集群中的多台计算机上并行处理这些数据块。 HDFS是Hadoop的分布式文件系统,它将大文件切分为多个数据块,并将这些数据块存储在集群中的多个计算机上。HDFS使用主从架构,其中NameNode负责管理文件系统的元数据,而多个DataNode负责实际存储数据。HDFS具有高容错性,能够自动复制数据块以保证数据的可靠性。 MapReduce是Hadoop的分布式计算框架,它通过将计算任务划分为多个Map和Reduce阶段来进行并行计算。Map阶段将输入数据切分为多个独立的小任务,并在集群中的多个计算机上并行执行。Reduce阶段将Map阶段的输出合并并进行聚合计算。MapReduce具有自动并行化、容错性和可扩展性等优点,能够高效地处理大规模数据集。 在学习Hadoop时,首先要了解Hadoop的核心组件,包括HDFS和MapReduce。然后,需要学习Hadoop的架构和工作原理,理解Hadoop如何实现分布式存储和计算。接下来,需要学习Hadoop的安装和配置,包括在单机和集群环境下的安装和配置过程。此外,还需要学习Hadoop的命令行工具和管理工具,以及Hadoop的API和编程模型。 在实际使用Hadoop时,需要掌握Hadoop的常用操作和管理技巧,如如何上传和下载文件、如何执行MapReduce作业、如何监控和管理Hadoop集群等。同时,需要学习Hadoop的优化技术和调优方法,以提高Hadoop集群的性能和效率。 总之,对于Hadoop学习,除了理解其基础知识和工作原理外,还需要熟悉其常用操作和管理技巧,以及灵活运用Hadoop来解决实际的大数据问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值