环境:ubuntu18.04, macOS, IntelliJ IDEA, JDK1.7, hadoop2.7.7 macOS 和 ubuntu 在同一个局域网,可用 ssh 连接 本文 wordcount 代码部分参考了:一起学Hadoop——第一个MapReduce程序
需要注意的是,除了上文提到的 jar 包之外,还需要导入 hadoop-mapreduce-client-common-2.7.7.jar 和 hadoop-mapreduce-client-core-2.7.7.jar
我的数据和生成的 jar 包在 mac 上,所以需要先传到 ubuntu 上,ssh 需要提前配置好,可参见“Mac 通过 SSH 访问局域网中的 Ubuntu”,传文件的命令如下 scp WordCount.jar username@192.168.3.7:/home/username/DockerVolume 数据如果比较大的话,可以直接拷贝到 ubuntu 上
拉取hadoop镜像 docker pull sequenceiq/hadoop-docker 列出所有镜像 docker images 列出所有容器 docker ps
把刚下载的镜像跑起来,并挂载ubuntu本地目录/home/username/DockerVolume到容器中的/opt/mrs
docker run -it -v /home/username/DockerVolume:/opt/mrs sequenceiq/hadoop-docker:latest /etc/bootstrap.sh -bash
镜像中已经配置好了变量 HADOOP_PREFIX=/usr/local/hadoop
进入此目录 cd $HADOOP_PREFIX
查看 hdfs 可以用如下命令 bin/hdfs dfs -ls /
在 hdfs 中创建输入文件夹 bin/hdfs dfs -mkdir /user/root/input2
把数据放入刚创建的文件夹中 bin/hdfs dfs -put /opt/mrs/test.txt /user/root/input2
可以查看一下 bin/hdfs dfs -ls /user/root/input2
运行 mapreduce bin/hadoop jar /opt/mrs/WordCount.jar input2 output2
查看输出 bin/hdfs dfs -ls /user/root/output2
将 hdfs 中的输出拷贝到容器和 ubuntu 共享的文件夹 bin/hdfs dfs -copyToLocal /user/root/output2/part-r-00000 /opt/mrs 这里会报一个警告 WARN hdfs.DFSClient: DFSInputStream has been closed already
实验完毕
