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

今天开始对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

*列出文件

hdfs dfs -ls /

修改hdfs权限

hdfs dfs -chmod -R 755 /

修改所有者

hdfs dfs -chown -R larry /

解除安全模式

hdfs dfsadmin -safemode leave

改变文件所属组

hdfs dfs -chgrp [-R] GROUP URI

这里也记录了一部分命令:
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
export HADOOP_USER_NAME=root
source ~/bash_profile

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值