一、Hadoop入门
1.1大数据技术介绍
大数据技术生态体系:
Hadoop 元老级分布式海量数据存储、处理技术系统,擅长离线数据分析
Hbase 基于hadoop的分布式海量数据库,离线分析和在线业务通吃
Hive sql 基于hadoop的数据仓库工具,使用方便,功能丰富,使用方法类似SQL
Zookeeper 集群协调服务
Sqoop数据导入导出工具
Flume数据采集框架
Storm 实时流式计算框架,流式处理领域头牌框架
Spark 基于内存的分布式运算框架,一站式处理 all in one,新秀,发展势头迅猛
sparkCore
SparkSQL
SparkStreaming
机器学习:
Mahout 基于mapreduce的机器学习算法库
MLLIB 基于spark机器学习算法库
1.2hadoop基本概念
(1)Hadoop是用于处理(运算分析)海量数据的技术平台,且是采用分布式集群的方式;
(2)Hadoop两个大的功能:
提供海量数据的存储服务;
提供分析海量数据的编程框架及运行平台;
(3)Hadoop有3大核心组件:
①HDFS—hadoop分布式文件系统海量数据的存储(集群服务)
②MapReduce—分布式运算框架(编程框架)(导jar包写程序),海量数据运算分析(替代品:storm/spark等)
③Yarn—资源调度管理集群(可以理解为是一个分布式的操作系统,管理和分配集群硬件资源)
1.2为什么需要hadoop
在数据量很大的情况下,单击的处理能力无法胜任,必须采用分布式集群的方式进行处理,而用分布式集群的方式处理数据,实现的复杂程度呈级数增加,所以,在海量数据处理的需求下,一个通用的分布式数据处理技术框架能大大降低应用开发难度和减少工作量。
二、Hadoop安装
在虚拟机下linux环境中,配置好jdk环境中
(一)将下载好的Hadoop直接放入到linux中/usr/local/tools目录下
(二)使用tar zxvf Hadoop-2.4.1.tar.gz解压
(三)配置
①开主机名
②在集群中部署三台主机
进入/usr/local/tools/hadoop-2.4.1/etc/hadoop
①修改vi Hadoop-env.sh配置
②输入vi core-site.xml
③输入vi hdfs-site.xml
④修改mapred-site.xml.template为mapred-site.xml
输入vi mapred-site.xml
⑤ 输入vi yarn-site.xml
⑥ 修改slaves
(四)启动hadoop
1、首先进行格式化namenode 输入命令:bin/hadoop namenode -format
2、手动启动各服务进程
在相应服务器上启动hdfs的相关进程:
①启动namenode进程—— sbin/hadoop-daemon.sh start namenode
②启动datanode进程 ——sbin/hadoop-daemon.sh start datanode
③启动启动secondarynamenode进程 ——sbin/hadoop-daemon.sh start secondarynamenode
然后,验证hdfs的服务是否能正常提供:
bin/hdfs dfsadmin -report 查看hdfs集群的统计信息
Shell 脚本批量启动方式
在任意一台服务器上执行命令:
(一)启动hdfs服务:sbin/start-dfs.sh
(二)启动yarn服务:sbin/start-yarn.sh
或者:直接启动hdfs+yarn服务:sbin/start-all.sh
集群内部的SSH秘钥认证登陆机制配置(免密登陆)
配置的机制: 在登陆方生成秘钥对,然后将公钥复制给目标主机,在目标主机上将这个公钥加入授权文件–/.ssh/authorized keys
真实大量配置的时候直接使用ssh工具箱的工具:
1、在登陆方生成秘钥对,执行命令:ssh-keygen
2、执行这条指令
ssh-copy-id 免密的登陆的目标主机
(一)生成秘钥
三、HDFS
总的设计思想:
设计目标:提高分布式并发处理数据的效率(提高并发度和移动运算到数据)
分而治之:将大文件、大批量文件,分布式存放在大量独立的服务器上,以便于采取分而治之的方式对海量数据进行运算分析;
重点概念:文件切块,副本存放,元数据,位置查询,数据读写流
3.1 hdfs的shell操作
hadoop fs -操作命令 -参数
-ls #显示目录信息
–>hadoop fs -ls hdfs://hadoop-server-00:9000/
这些参数中,所有的hdfs路径都可以简写
–>hadoop fs -ls / 等同于上一条命令的效果
-copyFromLocal #从本地文件系统中拷贝文件到hdfs路径去
–>hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
-copyToLocal #从hdfs拷贝到本地
–>hadoop fs -copyToLocal /aaa/jdk.tar.gz
-put #等同于copyFromLocal
-get #等同于copyToLocal,就是从hdfs下载文件到本地
-getmerge #合并下载多个文件
–> 比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,…
hadoop fs -getmerge /aaa/log.* ./log.sum
-moveFromLocal #从本地移动到hdfs
-moveToLocal #从hdfs移动到本地
-cp #从hdfs的一个路径拷贝hdfs的另一个路径
–>hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-mv #在hdfs目录中移动文件
-mkdir #在hdfs上创建目录
–>hadoop fs -mkdir -p /aaa/bbb/cc/dd
-rm #删除文件或文件夹
–> hadoop fs -rm -r /aaa/bbb/
-rmdir #删除空目录
-cat —显示文件内容
–>hadoop fs -cat /hello.txt
–appendToFile ----追加一个文件到已经存在的文件末尾
–>hadoop fs -appendToFile ./hello.txt hdfs://hadoop-server01:9000/hello.txt
可以简写为:
Hadoop fs -appendToFile ./hello.txt /hello.txt
-chgrp
-chmod
-chown
上面三个跟linux中的用法一样
–>hadoop fs -chmod 666 /hello.txt
-count #统计一个指定目录下的文件节点数量
–>hadoop fs -count /aaa/
-createSnapshot
-deleteSnapshot
-renameSnapshot
以上三个用来操作hdfs文件系统目录信息快照
–>hadoop fs -createSnapshot /
-df #统计文件系统的可用空间信息
-du
–>hadoop fs -df -h /
–>hadoop fs -du -s -h /aaa/*
-help #输出这个命令参数手册
-setrep #设置hdfs中文件的副本数量
–>hadoop fs -setrep 3 /aaa/jdk.tar.gz
-stat #显示一个文件或文件夹的元信息
-tail #显示一个文件的末尾
-text #以字符形式打印一个文件的内容