hadoop测试

  • 启动集群
    1. 在master上启动hadoop-daemon.sh start namenode
    2. 在slave上启动hadoop-daemon.sh start datanode
    3. 用jps指令观察执行结果
    4. 用hdfs dfsadmin -report观察集群配置情况
    5. hadoop fs -rm /filename
    6. 通过http://192.168.56.100:50070/web界面观察集群运行情况
    7. 用hadoop-daemon.sh stop ...手工关闭集群
  • 对集群进行集中管理
    1. 修改master上/etc/hadoop/slaves文件,每一个slave占一行
      							slave1
      							slave2
      							slave3
      						
    2. 使用start-dfs.sh启动集群,并观察结果
    3. 使用stop-dfs.sh停止集群
    4. 配置免密SSH远程登陆
      							ssh slave1
      							输入密码
      							exit
      							#此时需要密码才能登陆
      							
      							cd
      							ls -la
      							cd .ssh
      							ssh-keygen -t rsa (四个回车)
      					#会用rsa算法生成私钥id_rsa和公钥id_rsa.pub
      							ssh-copy-id slaveX
      							
      							再次ssh slave1
      							此时应该不再需要密码
      						
    5. 重新使用start-dfs.sh启动集群
  • 修改windows机上C:\Windows\System32\drivers\etc\hosts文件,可以通过名字访问集群web界面
  • 使用hdfs dfs 或者hadoop fs命令对文件进行增删改查的操作
    1. hadoop fs -ls /
    2. hadoop fs -put file /
    3. hadoop fs -mkdir /dirname
    4. hadoop fs -text /filename
    5. hadoop fs -rm /filename
  • 通过网页观察文件情况
  • 将hdfs-site.xml的replication值设为2,通过网页观察分块情况
  • 设定dfs.namenode.heartbeat.recheck-interval为10000,然后停掉其中一台slave,观察自动复制情况
  • 启动停掉的slave节点,通过网页观察datanode的动态添加
  • 添加新的节点,体会hadoop的横向扩展
    1. 启动slave4,关闭防火墙,修改hostname
    2. 修改etc/hosts,加入对自己以及其他机器的解析,重启网络
    3. 在master中设定对于slave4的解析
    4. 启动slave4的datanode,通过网页进行观察
    5. hdfs dfsadmin –shutdownDatanode slave4:50020
  • 通过java程序访问hdfs,就把HDFS集群当成一个大的系统磁盘就行了!
  • 从HDFS中读取文件
    				URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
    				InputStream in = new URL("hdfs://192.168.56.100:9000/test.data").openStream();
    				IOUtils.copyBytes(in, System.out, 4096, true);
    			
  • 学习使用FileSystem类
    				Configuration conf = new Configuration();
    				conf.set("fs.defaultFS", "hdfs://192.168.56.100:9000");
    				FileSystem fileSystem = FileSystem.get(conf);
    				
    				boolean b = fileSystem.exists(new Path("/hello"));
    				System.out.println(b);
    				
    				boolean success = fileSystem.mkdirs(new Path("/mashibing"));
    				System.out.println(success);
    				
    				success = fileSystem.delete(new Path("/mashibing"), true);
    				System.out.println(success);
    				
    				FSDataOutputStream out = fileSystem.create(new Path("/test.data"), true);
    				FileInputStream fis = new FileInputStream("c:/test/core-site.xml");
    				IOUtils.copyBytes(fis, out, 4096, true);
    				
    				FileStatus[] statuses = fileSystem.listStatus(new Path("/"));
    				//System.out.println(statuses.length);
    				for(FileStatus status : statuses) {
    					System.out.println(status.getPath());
    					System.out.println(status.getPermission());
    					System.out.println(status.getReplication());
    				}
    			
  • 思考百度网盘的实现方式?
  • core-site做什么用?hdfs-site做什么用?

猜你喜欢

转载自blog.csdn.net/a445849497/article/details/69140086