介绍
- open-source software 开源软件
- reliable, scalable, distributed computing 可靠的、可扩展的分布式计算
- 允许使用简单的编程模型对跨计算机集群(clusters of computers 计算机集群)的大数据集进行分布式处理。
- 它被设计成从单一服务器扩展到(scale up被扩展)数千台机器,每台机器都提供本地计算和存储。
- 而不是依靠硬件来提供高可用性,库本身被设计成检测(detect 检测)和处理应用层的故障。
- Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
子项目
- HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS
- MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred
旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API - HBase: 类似Google BigTable的分布式NoSQL列数据库。
- Hive:数据仓库工具,由Facebook贡献。
- Zookeeper:分布式锁设施,
- Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
- Pig: 大数据分析平台,为用户提供多种接口。
- Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。
- Sqoop:于在HADOOP与传统的数据库间进行数据的传递。
HDFS
基本命令分为fs、dfs
fs属于一个更抽象的概念,可以操作任何文件系统;而dfs只能操作HDFS文件系统相关
查看hdfs状态
$hdfs dfsadm -report
切换用户
$sudo su - hdfs
列出hdfs上的文件
$hdfs dfs -ls /
查看hdfs上文件占用空间
$ hadoop fs -du -h / 单个文件大小
$ hadoop fs -du -s -h / 文件总大小
创建目录并上传文件
$ hadoop fs -mkdir xxx路径
$ hadoop fs -put xxx xxxx
检查刚创建的文件
$ hadoop fs -ls xxx路径
$ hadoop fs -cat xxx/xx.后缀
下载文件
$ hadoop fs -get xxx路径 xxx
删除文件
$ hadoop fs -rm -r xxx路径
清空回收站
$ hdfs dfs -expunge
sqoop
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、oracle等)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
列出mysql数据库中所有数据库
sqoop list-databases -connect jdbc:mysql://192.168.1.10:3306 -username root -password root
列出数据库sqoop中的所有数据表
sqoop list-tables -connect jdbc:mysql:///sqoop -username root -password root
通过Sqoop执行SQL语句
sqoop eval -connect jdbc:mysql:///sqoop -username root -password root -query "select * from employee where id=5"
将传统数据库中的数据传入hadoop(hive)中
1. sqoop import --username root --password apexsoft --verbose --delete-target-dir \ (加载)
2. --connect jdbc:mysql://10.64.36.43:3306/dsc_cfg --table t_busi_code --hive-database dsc_cfg -m 1 \ (源表 目标库)
3. --null-non-string '\\N' --null-string '\\N' --hive-drop-import-delims \ (过滤空串,设置用目标库中的字符串格式代替源表中设定的字符串)
4. --hive-table t_busi_code --hive-import --hive-overwrite -- --default-character-set=utf-8(导入方式是覆盖,编码是utf-8)
//把传统数据库中的数据导入到hive中