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 配置文件

浙公网安备 33010602011771号