Hadoop大数据平台,相对于传统数据仓库,有以下优势:
完全分布式,可以采用廉价机器搭建集群,完全可以满足海量数据的存储需求。
弱化数据格式,数据模型和数据存储分离,可以满足对异构数据的分析需求。
其平台有两个重要贡献,一是MapReduce体系,二是HDFS分布式文件系统,奠定了如今Hadoop平台在大数据方面的重要定位,大部分技术都绕不开Hadoop。
1.HDFS
随着数据量越来越大,在一台机器上已经无法存储所有的数据了,那我们会将这些数据分配到不同的机器来进行存储,但是这就带来一个问题:不方便管理和维护。所以,我们就希望有一个系统可以将这些分布在不同操作服务器上的数据进行统一管理,这就有了分布式文件系统。HDFS是分布式文件系统的其中一种(目前用得最广泛的一种)
它的重点就是理解它内部是如何实现分布式存储的,一般搭配zookeeper一起使用,具体内部实现详见:什么是HDFS
2.MapReduce
在Hadoop平台下,已经定义好它的流程
我们只需要对参数进行自定义,当然也可以对清理或者Map等声明函数进行自定义,这是分布式处理数据的一个典范。漫画解释MapReduce
Java主程序运行MapReduce的例子,具体实操流程请详看有关手册文档
3.Hbase
作为大数据平台下使用的一种数据库,它适用于大数据这种多次查询和插入的情况,使用流程如下
用Java操作Hbase教程如下:https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247486279&idx=2&sn=e33f05d77e1e4dd971ad80b85433fc8e&chksm=ebd74a46dca0c3507c966f74dd4fd4f3c2ca76151f9904e68e7c8b535c30213c1c5837aafd6b&mpshare=1&scene=1&srcid=&sharer_sharetime=1591155509899&sharer_shareid=354a9808d9e4ef34aa7e07486dbf6510#rd
4.相关指令
在shell下进入Hbase目录,输入start-Hbase.sh启动Hbase
1.status 查看数据库状态
2.version 查看数据库版本
3.create 'member','member_id','address','info' 创建表
4.listdescribe 'member' 查看表信息
5.disable 'member' alter'member',{NAME=>'member_id',METHOD=>'delete'} enable 'member' 删除列族
6.disable 'temp_table' drop 'temp_table' 删除表
7.put'member','scutshuxue','info:birthday','1987-06-17' 插入记录
8.get 'member','scutshuxue' 获取一个行键的所有信息
9.get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965} 通过TIMESTAMP来获取数据
10.delete 'member','temp','info:age' 删除指定行键字段
11.count 'member' 查询表中有多少行
12.truncate 'member' 清空表
在shell下进入Hadoop目录,输入start-all.sh等价于start-dfs.sh + start-yarn.sh启动所有进程
但是一般不推荐使用start-all.sh(因为开源框架中内部命令启动有很多问题)。
1. hdfs dfs –ls [文件目录] 查看指定目录下内容
hdfs dfs -ls -R / //显式目录结构
2. hdfs dfs –cat [file_path] 打开某个已存在的文件
3、hdfs dfs –put [本地地址] [hadoop目录] 将本地文件存储至hadoop
4、将hadoop上某个文件down至本地已有目录下
hadoop dfs -get [文件目录] [本地目录]
5、hdfs dfs –rm [文件地址] 删除hadoop上指定文件
6、hdfs dfs –mkdir /user/t 在hadoop指定目录内创建新目录
7、hdfs dfs -touchz /user/new.txt 在hadoop指定目录下新建一个空文件
8、hdfs dfs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)将hadoop上某个文件重命名
9、hdfs dfs –getmerge [新文件目录] 将hadoop指定目录下所有内容保存为一个文件,同时down至本地
10、hadoop job –kill [job-id] 将正在运行的hadoop作业kill掉
11、安全模式
(1)退出安全模式
NameNode在启动时会自动进入安全模式。安全模式是NameNode的一种状态,在这个阶段,文件系统不允许有任何修改。
系统显示Name node in safe mode,说明系统正处于安全模式,这时只需要等待十几秒即可,也可通过下面的命令退出安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode leave
(2) 进入安全模式
在必要情况下,可以通过以下命令把HDFS置于安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode enter
12、节点添加
添加一个新的DataNode节点,先在新加节点上安装好Hadoop,要和NameNode使用相同的配置(可以直接从NameNode复制),修改HADOOPHOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改HADOOPHOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改HADOOP_HOME/conf/slaves文件,加入新节点名,再建立新加节点无密码的SSH连接,运行启动命令为:/usr/local/hadoop$bin/start-all.sh
13、负载均衡
HDFS的数据在各个DataNode中的分布可能很不均匀,尤其是在DataNode节点出现故障或新增DataNode节点时。新增数据块时NameNode对DataNode节点的选择策略也有可能导致数据块分布不均匀。用户可以使用命令重新平衡DataNode上的数据块的分布:/usr/local/hadoop$bin/start-balancer.sh
更多详细指令可参考Hadoop的API文档
最后附上大数据技术体系