美文网首页Hadoop
HDFS编程实践

HDFS编程实践

作者: 张玉腾 | 来源:发表于2017-03-19 21:59 被阅读0次

实验环境

VMware + Ubuntu 16.04

Hadoop环境部署

简介

本实验使用Hadoop环境采用Docker来搭建的,采用开源项目hadoop-cluster-docker,总共有三个结点,下面来一段百度百科的摘要:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

[站外图片上传中……(1)]

安装步骤

Ubuntu系统安装过程就不演示了,下面从安装后开始操作。

  • 修改软件源
    因为在国内访问Ubuntu的官方源特别慢,这里我推荐大家使用清华大学开源镜像,打开链接后按照帮助修改即可。
  • 安装Docker
    使用清华大学开源镜像中的Docker进行安装,打开后按照帮助操作即可。
  • 将当前用户加入Docker用户组
sudo usermod -aG docker $USER

$USER表示当前用户名,例如,当前用户是hadoop,则把$USER替换成hadoop即可;然后注销,再次登录即可方便使用Docker了;

  • 创建Hadoop网络
docker network create --driver=bridge hadoop
  • 下载Docker镜像
docker pull kiwenlau/hadoop:1.0
  • 从GitHub下载hadoop-cluster-docker项目代码
git clone https://github.com/kiwenlau/hadoop-cluster-docker
  • 添加9000端口映射
cd hadoop-cluster-docker
vim start-container.sh
将第10行改为如下代码
sudo docker run -itd \
                --net=hadoop \
                -p 9000:9000 \
                -p 50070:50070 \
                -p 8088:8088 \
                --name hadoop-master \
                --hostname hadoop-master \
                kiwenlau/hadoop:1.0 &> /dev/null

因为我们后续要调用HDFS的API,默认端口为9000,所以要将容器中的9000端口暴露出来。

  • 运行容器
./start-container.sh
  • 运行结果
start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~#

启动了3个容器,1个master, 2个slave
运行后就进入了hadoop-master容器的/root目录

  • 启动hadoop
./start-hadoop.sh
  • 运行wordcount测试
./run-wordcount.sh
编程实践

实际操作过程可以查看此篇博客。此处只写了如何在本机调用容器中的接口。

  • 引入Java API
    重新打开一个终端,执行如下命令:
wget https://github.com/kiwenlau/compile-hadoop/releases/download/2.7.2/hadoop-2.7.2.tar.gz
tar -xzvf hadoop-2.7.2.tar.gz

使用Eclipse编写HDFS的程序时,引入当前下载Hadoop的Java API即可。

  • 代码配置
    在编写Java代码时,首先会创建一个Configuration对象,调用该对象的set方法,设置fs.defaultFS为hdfs://localhost:9000,localhost为本机地址,如果部署在其他机器上,将localhost改为那台机器的ip地址即可,下面是代码
Configuration conf = new Configuration();  
conf.set("fs.defaultFS","hdfs://localhost:9000");
问题总结

在Ubuntu上使用Eclipse编写代码调用Hadoop API遇到的坑

  • 加载jar包时,一定要将common和hdfs的lib目录下的所有jar包都加载进去。
  • 若遇到log4j这个包提示的错误,试试下面的解决办法。
    在src目录下新建一个log4j.properties文件,写入:
log4j.rootLogger = off

相关文章

网友评论

    本文标题:HDFS编程实践

    本文链接:https://www.haomeiwen.com/subject/mrhknttx.html