HBase的体系结构
1、主从结构:
主节点:HMaster
从节点:RegionServer
2、基于HDFS上的NOSQL数据库
HBase HDFS
表 --------> 目录
数据 ---------> 文件
主从结构的单点故障问题
1、小结:主从结构
主节点 从节点
HDFS NameNode DataNode
Yarn ResourceManager NodeManager
HBase HMaster RegionServer
Storm Nimbus Supervisor
Spark Master Worker
2、主从结构的单点故障问题
HDFS
1、Web Console:网页 端口 50070
2、命令行
(1) 操作命令: hdfs dfs ***** 命令
-mkdir: 创建目录 -p 先创建父目录
-ls 查看某个HDFS的目录
-ls -R 查看某个HDFS的目录,包括子目录
-lsr 查看某个HDFS的目录,包括子目录
-put 上传文件
-copyFromLocal 上传文件
-moveFromLocal 上传文件 相当于剪切
-copyToLocal 下载文件
-get 下载文件
-rm 删除目录
-rmr 举例:hdfs dfs -rmr /output
日志:
17/09/10 21:27:53 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /output
-getmerge:将某个HDFS下的文件,先合并,再下载
-cp 拷贝
-mv 移动
-count hdfs dfs -count /students
-du
-text、-cat
balancer: 平衡操作
(2) 管理命令: hdfs dfsadmin *****
-report
-safemode
[root@tanzhou111 ~]# hdfs dfsadmin -safemode
Usage: hdfs dfsadmin [-safemode enter | leave | get | wait]
[root@tanzhou111 ~]# hdfs dfsadmin -safemode get
Safe mode is OFF
[root@tanzhou111 ~]# hdfs dfsadmin -safemode enter
Safe mode is ON
[root@tanzhou111 ~]# hdfs dfs -mkdir /aaaa
mkdir: Cannot create directory /aaaa. Name node is in safe mode.
[root@tanzhou111 ~]# hdfs dfsadmin -safemode leave
Java API程序
Java Eclipse的安装和基本工程的建立配置,在xxx中记载
本次 的测试只在Junit下进行测试
例1:利用java api 创建文件夹
(1) 依赖的jar包
/root/training/hadoop-2.7.3/share/hadoop/common
/root/training/hadoop-2.7.3/share/hadoop/common/lib
/root/training/hadoop-2.7.3/share/hadoop/hdfs
/root/training/hadoop-2.7.3/share/hadoop/hdfs/lib
(2)方法
1).在java中修改环境变量
2).-D参数: 要求:获取命令行的参数
3).chmod将文件权限改为777
4).修改hadoop权限为false
1).在java中修改环境变量
使用System.setProPerty("HADOOP_USER_NAME","root")
,告诉HDFS我是root用户
public class TestDemo{
@Test
public void createf1() throws Exception{
System.setProPerty("HADOOP_USER_NAME","root");
//1.配置HDFS的主节点:NameNode
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2获取客户端
FileSystem fs = FileSystem(conf);
//3.建立目录
fs.mkdir(new Path("/folder1"));
}
}
2).-D参数: 要求:获取命令行的参数
相当于使用-D参数在命令行输入时,充当全局变量,在任何函数都可以调用
1.编写TestD
类
public class TestD{
public static void main(String[],args){
method1();
}
public static method1(){
String name = System.getProPerty("user");
String age = System.getProPerty("age");
System.out.println(name+" "+age);
}
}
2.在命令行执行javac TestD.java
编译
3.在命令行执行 java -Duser=Lion -Dage=23 TestD.java
执行结果为
Lion 23
3).chmod将文件权限改为777
环境:linux
原理:将文件的权限改为777,所有用户都可读,可写,可执行
方法:
hdfs dfs -chmod 777 /folder1
环境:Windows Eclipse Java
原理:Java Api
方法:
public class TestDemo{
@Test
public void createf1() throws Exception{
//1.配置HDFS的主节点:NameNode
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2获取客户端
FileSystem fs = FileSystem(conf);
//3.建立目录
fs.mkdir(new Path("/folder1"));
}
}
4).修改hadoop权限为false(最彻底)
原理:关闭HDFS的权限检查,HDFS不进行权限诊断
环境:Linux
方法:修改HDFS的配置文件/root/training/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
#关闭HDFS的权限检查
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
环境:Windows Eclipse Java
原理:Java Api
方法:
public class TestDemo{
@Test
public void createf1() throws Exception{
//1.配置HDFS的主节点:NameNode
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2获取客户端
FileSystem fs = FileSystem(conf);
//3.建立目录
fs.mkdir(new Path("/folder1"));
}
}