hadoop学习1---基础环境搭建与使用
2015-06-13 15:21
609 查看
运行结果附图
在此把本周一课上的操作简要记录:首先做一些基本的配置,启动服务的准备工作:
首先启动三个docker
docker start master
docker attach master
docker start slave1
docker attach slave1
docker start slave2
docker attach slave2
配置/etc/hosts文件
三个容器开启ssh服务
service sshd start
分别开启master 上的namenode 服务和slave上的 datanode服务
service hadoop-hdfs-namenode start
service hadoop-hdfs-datanode start
分别开启master 上的resourcemanager 服务和slave上的nodemanager服务
service hadoop-yarn-resourcemanager start
service hadoop-yarn-nodemanager start
开启master上的history服务
service hadoop-mapreduce-historyserver start
至此基本准备工作完成,可以进行一个小的mapreduce示例:文件中单词计数统计
首先 master容器内编辑一个文件 ,简单存放几个单词,命名为wordcount 放到/home目录下
文件内容如图1
图1:
![](http://gitlab.local/uploads/course/course_hadoop/36c462af2f/2015-03-17_14_52_17_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
将本地文件放到hadoop的hdfs文件系统中
[root@db9beb01ee90 /]# hadoop fs -put /home/wordcount /user/root/
但是默认的是安全模式,需要切换到hadoop的超级用户下,然后将 safe mode关闭
[root@db9beb01ee90 /]# su hdfs
bash-4.1$ hadoop dfsadmin -safemode leave
看到有safe mode is OFF的消息后,可以退出超级用户
bash-4.1$ exit
图2:
![](http://gitlab.local/uploads/course/course_hadoop/b892293a0f/2015-03-16_16_25_38_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
重新输入步骤2中的指令,把本地的wordcount文档,放到hdfs中的/user/root下
[root@db9beb01ee90 /]# hadoop fs -put /home/wordcount /user/root/
观察一下目前hdfs下的文件
[root@db9beb01ee90 /]# hadoop fs -ls /user/root
发现wordcount已经存在在 /user/root文件下了
图3:
![](http://gitlab.local/uploads/course/course_hadoop/bb51e626e4/2015-03-16_16_30_59_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
然后,使用hadoop的jar包完成mapreduce任务
[root@db9beb01ee90 /]# hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/root/wordcount /user/root/wordcountout
其中/user/root/wordcount是输入路径 /user/root/wordcountout是单词统计的结果的输出路径
然后可以看到 hadoop启动了mapreduce任务。
图4:
![](http://gitlab.local/uploads/course/course_hadoop/bf1b131ed1/2015-03-16_16_33_51_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
图5:
![](http://gitlab.local/uploads/course/course_hadoop/7031745ad8/2015-03-16_16_34_12_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
最后我们可以看一下mapreduce的输出结果
[root@db9beb01ee90 /]# hadoop fs -ls /user/root/wordcountout
图6:
![](http://gitlab.local/uploads/course/course_hadoop/961f9aa1d5/2015-03-16_16_39_50_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
此项任务的输入结果有只有两个文件(输出结果的文件个数不确定,但是可以配置)
Found 2 items
-rw-r--r-- 3 root hadoop 0 2015-03-16 06:55 /user/root/wordcountout/_SUCCESS
-rw-r--r-- 3 root hadoop 16 2015-03-16 06:55 /user/root/wordcountout/part-r-00000
其中我们单词计数的结果存储在part-r-00000这个文件中
可以cat一个这个part-r-00000文件,看一下单词计数的计数
hadoop fs -cat /user/root/wordcountout/part-r-00000
输出结果如下
hello 4
world 2
图7:
![](http://gitlab.local/uploads/course/course_hadoop/e36dabbf6c/2015-03-16_16_40_14_%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
至此我们完成了一个小的mapreduce示例
问题、心得与体会记录
体会1在Linux系统下操作Docker,比较简单,建议使用。
(Linux下可能没有Windows系统下的boot2docker的各种问题,而且不需要借助CRT,直接开启多个终端)
Docker的基本三个组件为镜像(只读),容器,仓库。在理解了这三个概念之后,对Docker的各种命令操作也就比较简单了
体会2
在使用的Docker的过程中请注意:
在敲入命令 docker start container_name后,便开启了容器。
但此时还没有进入容器,进入容器的方法有多中,(网上博客有很详细的介绍)
其中简单的一种:docker attach container_name
当敲入此命令后,便进入这个容器,当你在此容器中敲入exit时,会终止容器,注意,只是终止了此容器,但是此容器还是存在的,终止并不意味这消亡(我就是在这里理解错了)。
可以使用命令docker ps -a 查看当前正在运行或是停止的容器,你会看到还是可以看到该容器的,但是使用命令docker ps(查看当前正在运行的容器),你会发现该容器不存在在列表中。
若要重启该容器,键入docker restart container_name 即可。
(以上的命令中能直接使用container_name容器名直接操作,是在你已经使用为该镜像命名)
相关文章推荐
- 光流法(Optical Flow)
- centos6.6开启防火墙
- Shell中逻辑判断
- bash 编程中循环语句用法
- 11安装CentOS7,附图 [原创]
- Shell中IFS用法
- HDevelop Language
- Shell中的${},##和%%的使用
- Shell语法中的test命令用法
- Shell中的数值计算
- linux入门基础——linux软件管理基础:YUM
- shell中if做比较
- shell 中 2>&1 的使用
- Linux shell 脚本中”2>&1″的含义解释
- linux centos svn 安装配置自动同步更新web服务
- Linux 常用命令总结
- Linux nm命令
- linux下串口的阻塞和非阻塞操作
- Linux 高可用(HA)集群之Heartbeat详解
- IntelliJ IDEA导航特性Top20