您的位置:首页 > 运维架构

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:



将本地文件放到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:



重新输入步骤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:



然后,使用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:



图5:



最后我们可以看一下mapreduce的输出结果

[root@db9beb01ee90 /]# hadoop fs -ls /user/root/wordcountout

图6:



此项任务的输入结果有只有两个文件(输出结果的文件个数不确定,但是可以配置)

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:



至此我们完成了一个小的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容器名直接操作,是在你已经使用为该镜像命名)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: