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
数据大小 GB PB
访问 交互型和批处理 批处理
更新 多次读写 一次写入多次读取
结构 静态模式 动态模式
集成度
伸缩性 非线性 线性
结构化数据数量 结构化数据 可以有效处理大结构化数据

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

扫描二维码关注公众号,回复: 1535012 查看本文章

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了。

猜你喜欢

转载自blog.csdn.net/qq_35036995/article/details/80473508