Hadoop(2)--Hadoop集群测试

原文:http://www.mashibing.com/hadoop_test.html

- 启动集群

  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(la 是可以看到隐藏的文件 就是为了 将 .ssh 隐藏文件显示出来)

        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 /          (查看Hadoop根目录下所有的文件及文件夹 目录)

  2.hadoop fs -put file /       (将 一个 file 文件 放置到 Hadoop 分布式文件系统根目录下)

  3.hadoop fs -mkdir /dirname    (在Hadoop分布式文件系统 根目录下 创建一个 dirname 的文件目录)

  4.hadoop fs -text /filename    (查看Hadoop分布式文件系统下 某一个 filename 的文本内容)

  5.hadoop fs -rm /filename      (删除Hadoop分布式文件系统下 某一个filename 文件、及文件目录 文件内容)

- 通过网页观察文件情况   http://192.168.56.100:50070   (192.168.56.100 为master物理机,50070 为Hadoop分布式文件系统 默认端口)

- 将hdfs-site.xml的replication值设为2,通过网页观察分块情况

  1. 访问官网 http://hadoop.apache.org/docs/r2.7.3/  

  2.查看 configuration 配置文件配置明细,找到 hdfs-default.xml ,地址:http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

  3.设定dfs.namenode.heartbeat.recheck-interval为10000,然后停掉其中一台slave,观察自动复制情况

  4.启动停掉的slave节点,通过网页观察datanode的动态添加

- 添加新的节点,体会hadoop的横向扩展

  1.启动slave4,关闭防火墙,修改hostname

  2.修改etc/hosts,加入对自己以及其他机器的解析,重启网络

  3.在master中设定对于slave4的解析

  4.启动slave4的datanode,通过网页进行观察

  5.hdfs dfsadmin –shutdownDatanode slave4:50020

- 通过java程序访问hdfs,就把HDFS集群当成一个大的系统磁盘就行了!

  1.从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);

  2.学习使用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做什么用?

  Hadoop安装默认加载core-default 配置文件内容,所以如果要指定Hadoop配置文件内容,需要调整 core-site 文件,会覆盖 default 文件内容

  同理 hdfs-site 配置文件

  

 

 

posted @ 2017-07-02 18:20  xu_shuyi  阅读(384)  评论(0)    收藏  举报