【问题标题】:running a mapper and reducer program in hadoop-3.1.3在 hadoop-3.1.3 中运行 mapper 和 reducer 程序
【发布时间】:2020-02-19 03:16:57
【问题描述】:

我正在尝试运行一个 hadoop 容器。我所做的是我从下载 hadoop https://hadoop.apache.org/releases.html 我下载了3.1.3文件https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.3/hadoop-3.1.3-src.tar.gz安装成功。我看到以下

debian@osboxes:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              latest              eeadc22d21a9        2 weeks ago         933MB
hadoop-build-1001   latest              1d1a162a72a6        3 months ago        2.02GB
hadoop-build        latest              5c1480006f78        3 months ago        1.96GB
ubuntu              xenial              5f2bf26e3524        3 months ago        123MB

现在当我尝试运行图像时

 docker run -it --user debian 1d1a162a72a6

我得到错误

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "chdir to cwd (\"/root\") set in config.json failed: permission denied": unknown.
debian@osboxes:~$ 

我无法理解为什么会出现这些错误以及如何摆脱上述错误。 我以某种方式可以以 root 用户身份登录到容器,然后在里面我做了一个su debian,所以我能够以 debian 身份登录, 现在我有了想在其中运行的程序 mapper 和 reducer。 我当时就这样做了

RUN apt-get update
RUN apt-get install default-jdk wget -y
RUN apt-get install python3 -y
RUN wget
http://mirrors.estointernet.in/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
RUN tar -xzvf hadoop-2.10.0.tar.gz
ENV JAVA_HOME $(readlink -f /usr/bin/java | sed "s:bin/java::")
RUN mv hadoop-2.10.0 /usr/local/hadoop
ENV PATH /usr/local/hadoop/bin:$PATH
RUN rm -rf hadoop-2*

现在我已经在 hadoop 3 中安装了 hadoop-2.10.0,然后我执行了我的程序。 我必须在容器内编辑 debian 的 .bashrc。 我想知道如何在我从源代码构建和编译的 hadoop-3.1.3 中运行映射器和减速器程序,或者我在这里做错了什么?

有没有更好的方法来使用我花了几个小时编译和安装的 hadoop-3.1.3 环境。

更新 1

在我下载的hadoop源文件的构建脚本中有以下几行

docker build -t "hadoop-build-${USER_ID}" - <<UserSpecificDocker
FROM hadoop-build
RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME}
RUN useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME}
RUN echo "${USER_NAME} ALL=NOPASSWD: ALL" > "/etc/sudoers.d/hadoop-build-${USER_ID}"
ENV HOME /home/${USER_NAME}

UserSpecificDocker

# By mapping the .m2 directory you can do an mvn install from
# within the container and use the result on your normal
# system.  And this also is a significant speedup in subsequent
# builds because the dependencies are downloaded only once.
docker run --rm=true -t -i \
  -v "${PWD}:/home/${USER_NAME}/hadoop${V_OPTS:-}" \
  -w "/home/${USER_NAME}/hadoop" \
  -v "${HOME}/.m2:/home/${USER_NAME}/.m2${V_OPTS:-}" \
  -u "${USER_NAME}" \
  "hadoop-build-${USER_ID}"
"start-build-env.sh" 

所以我认为我有 hadoop 的开发环境。 但是我的问题在于容器。 当我做docker ps -a 我明白了

19a4eff3b5e5        1d1a162a72a6        "/bin/bash"              3 hours ago         Exited (0) 3 hours ago                          assignment4
30933891f08c        eeadc22d21a9        "python3"                3 hours ago         Exited (0) 3 hours ago                          python
ccdab94fd32f        1d1a162a72a6        "/bin/bash"              9 hours ago         Exited (0) 5 hours ago                          confident_wu
ce462ecfc5f2        1d1a162a72a6        "/bin/bash -v /home/…"   9 hours ago         Exited (127) 9 hours ago                        stupefied_grothendieck
6123f134934c        1d1a162a72a6        "/bin/bash"              9 hours ago         Exited (1) 9 hours ago                          stupefied_taussig
0ed23a8112a4        1d1a162a72a6        "/bin/bash"              10 hours ago        Exited (0) 10 hours ago                         vigilant_bartik
c343731b7cde        1d1a162a72a6        "/bin/bash"              11 hours ago        Exited (0) 10 hours ago                         gallant_ardinghelli
2f95d3b4c1b8        1d1a162a72a6        "/bin/bash"              11 hours ago        Created                                         nice_hermann
5ebe9f18c744        1d1a162a72a6        "/bin/bash"              27 hours ago        Created                                         pensive_easley
c1b43edfafb9        1d1a162a72a6        "/bin/bash"              27 hours ago        Exited (1) 3 hours ago                          adoring_williams
42dea69d1d4e        1d1a162a72a6        "/bin/bash"              27 hours ago        Created                                         funny_austin
6f736902e650        1d1a162a72a6        "/bin/bash"              27 hours ago        Exited (1) 27 hours ago                         strange_ride
09306e5ec5d1        1d1a162a72a6        "--name=kaushik"         32 hours ago        Created                                         pensive_shtern
699fb2a23e1c        1d1a162a72a6        "--name=kaushik"         32 hours ago        Created                                         sharp_feistel
9f7b29ab512e        1d1a162a72a6        "--name=kaushik"         32 hours ago        Created                                         elastic_payne2
25bfc74fab3b        1d1a162a72a6        "/bin/bash"              33 hours ago        Exited (1) 31 hours ago                         festive_einstein
e658dd320297        1d1a162a72a6        "/bin/bash"              33 hours ago        Up 3 hours                                      objectiv:

我不知道创建了多少容器,并且我对容器内的环境进行了更改。重新启动后,我找不到对这些容器进行的任何更改。我的容器如何在重新启动后仍然存在?

【问题讨论】:

  • 请只使用现有的 Hadoop docker 镜像,不要混合版本
  • 您也不需要从容器中运行代码。您只需从任何地方配置它以使用 YARN 集群地址
  • 我无法理解如何使用现有图像来运行映射器和化简器代码。我有代码,但我不清楚如何在 localhost 上拥有所有内容。
  • 那就不用容器来学习了。 Hadoop 从未设计或打算在 Docker 中运行

标签: docker hadoop


【解决方案1】:

我无法理解如何使用现有图像来运行映射器和化简器代码。

运行docker exec进入容器

运行yarn jar 命令...

与任何其他提交作业的方式没有什么不同

【讨论】:

  • 我稍微添加了有问题的新信息。你能告诉我如何让我的容器或我在容器内完成的一些事情在重启后存活下来,例如我创建了 mapper.py 和 reducer.py 并编辑了 .bashrc 文件我怎样才能让那个东西被使用或保存即使在重新启动后或者我已经退出容器后也在容器中。这基本上是一个学习环境,试图通过在容器中运行 hadoop 和 mapper reducer 程序来学习 hadoop 的基础知识。它不是生产环境。
  • 不生产也没关系。在没有 Docker 的情况下学习 Hadoop 或在没有 Hadoop 的情况下学习 docker。将它们结合起来可能只会让您感到困惑
  • 另外,很少有人真正编写 mapreduce 代码。 Pyspark 将是一个更好的学习选择
  • 我正在做一个作业问题,我必须在容器中运行 hadoop 并检查 map reduce 程序。我没有这样做,因为我想做。
  • 我的 mapreduce 教育根本没有接触 Docker。 Mapreduce 代码已在 YARN 容器 中运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 2012-05-30
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多