大数据实操2 - hadoop集群访问——Hadoop客户端访问、Java API访问
上一篇中介绍了hadoop集群搭建方式,本文介绍集群的访问。集群的访问方式有两种:hadoop客户端访问,Java API访问。
一、集群客户端访问
Hadoop采用C/S架构,可以通过客户端对集群进行操作,其实在前面搭建的集群环境中,每个集群节点都可以作为一个客户端进行集群访问,但是一般场景下,会将集群服务器作为整体,从外部设置客户端对集群进行访问。
为了能从集群服务器外部访问,需要一台与集群服务器在同一网段的主机(可以与集群节点Ping通),安装hadoop作为客户端机器,并将该机器与集群服务器配置到同一集群内。
1、安装JDK
2、安装Hadoop
与集群搭建中一样,需要安装hadopp
3、客户端机器配置core-site.xml

4、客户端机器配置mapred-site.xml

5、客户端机器配置yarn-site.xml

二、网页访问
namenodeIP:50070
sourcemangerIP:8088
三、Java API访问
此种方法通过hadoop提供的API编写客户端程序,从而实现对hadoop的操作。java程序的编写一般是在Windows环境下的,因此需要首先对win环境进行配置。
(一)Win环境配置
1、下载并解压hadoop安装包
这里注意不要放到含有空格的目录下,虽然网上有些解决方案,但是我试了没起作用,放到不含空格的目录下最省事。
2、配置环境变量
- 增加HADOOP_HOME变量,变量值为你的hadoop目录

- 配置Path变量,增加内容:
%HADOOP_HOME%\bin\
%HADOOP_HOME\sbin\

3、配置hadoop中的java home
- 编辑文件,hadoop目录下\etc\hadoop\hadoop-env.cmd
修改其中JAVA_HOME变量,变量值为jdk地址,jdk的地址注意同样不要包含空格,我是把原来的jdk复制一份到了没有空格的目录下。

4、放置文件
下载https://github.com/steveloughran/winutils
其中对应版本bin目录下的winutil.exe放置到你的hadoop目录的bin目录下
hadoop.dll文件放置到C:Windows\System32下
(二)Java程序开发
1、导入jar包
hadoop安装文件夹/share/hadoop路径下为hadoop提供的jar包,按需导入。
2、编程
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test; import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException; public class HdfsClient { FileSystem fs = null; public static void main(String[] args){
//创建一个配置对象,用于设置集群上的块大小,副本数量等。
Configuration conf = new Configuration();
conf.set("dfs.replication", "2");
conf.set("dfs.blocksize", "64m"); //uri,
//root:指定用户,如果不填写,会默认当前win用户 try {
// 构造一个访问指定HDFS的客户端对象,
// 参数一:HDFS系统的URI,
// 参数二:客户端要配置参数。
// 参数三:客户端用户名
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.1.237:9000/"), conf, "root");
fs.copyFromLocalFile(new Path("I:/[neubt]Friends_搜狐原画版.torrent"), new Path("/home/"));
fs.close(); } catch (URISyntaxException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} } @Before
public void inint() throws Exception {
URI uri = new URI("hdfs://192.168.1.237:9000/"); Configuration conf = new Configuration();
conf.set("dfs.replication", "2");
conf.set("dfs.blocksize", "64m");
fs = FileSystem.get(new URI("hdfs://192.168.1.237:9000/"), conf, "root"); } /*
从hdfs下载文件
*/
@Test
public void testDownLoad() throws IOException {
Path localPath = new Path("I:/hdfstest/Friends_搜狐原画版.torrent");
System.out.println(localPath); fs.copyToLocalFile(new Path("/home/[neubt]Friends_搜狐原画版.torrent"), localPath);
// fs.copyToLocalFile(new Path("/home/log4j-1.2.17.zip"), new Path("/hdfstest"));
fs.close(); } }
文件的上传未涉及访问本地磁盘,文件下载时则需要调用本地方法来实现对本地磁盘库的访问,本地磁盘库的访问需要调用hadoop提供的C语言库,该库在hadoop的安装文件中提供,因此需要将hadoop安装包中的本地方法添加到环境变量中。
大数据实操2 - hadoop集群访问——Hadoop客户端访问、Java API访问的更多相关文章
- Hadoop集群(四) Hadoop升级
Hadoop前面安装的集群是2.6版本,现在升级到2.7版本. 注意,这个集群上有运行Hbase,所以,升级前后,需要启停Hbase. 更多安装步骤,请参考: Hadoop集群(一) Zookeepe ...
- 在windows远程提交任务给Hadoop集群(Hadoop 2.6)
我使用3台Centos虚拟机搭建了一个Hadoop2.6的集群.希望在windows7上面使用IDEA开发mapreduce程序,然后提交的远程的Hadoop集群上执行.经过不懈的google终于搞定 ...
- hadoop集群启动报错: java.io.IOException: Incompatible clusterIDs
java.io.IOException: Incompatible clusterIDs in /export/hadoop-2.7.5/hadoopDatas/datanodeDatas2: nam ...
- Hadoop集群部署-Hadoop 运行集群后Live Nodes显示0
可以尝试以下步骤解决: 1 ,分别删除:主节点从节点的 /usr/local/hadoop-2.6.2/etc/tmp 下得所有文件; 2: 编辑cd usr/local/hadoop-2.6. ...
- 【hadoop】——window下elicpse连接hadoop集群基础超详细版
1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...
- Ganglia监控Hadoop集群的安装部署[转]
Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52 ...
- Hadoop集群(第7期)_Eclipse开发环境设置
1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...
- hadoop系列一:hadoop集群安装
转载请在页首明显处注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6384393.html 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据 ...
- 配置两个Hadoop集群Kerberos认证跨域互信
两个Hadoop集群开启Kerberos验证后,集群间不能够相互访问,需要实现Kerberos之间的互信,使用Hadoop集群A的客户端访问Hadoop集群B的服务(实质上是使用Kerberos Re ...
- Hadoop集群(三) Hbase搭建
前面已经完成Zookeeper和HDFS的安装,本文会详细介绍Hbase的安装步骤.以及安装过程中遇到问题的汇总. 系列文章: Hadoop集群(一) Zookeeper搭建 Hadoop集群(二 ...
随机推荐
- [转][SqlServer]收缩日志
USE StudyDB ; GO ALTER DATABASE StudyDB SET RECOVERY SIMPLE;--设置简单恢复模式 GO ); GO ALTER DATABASE Study ...
- 窗口置顶 - 仿TopWind
前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...
- 基于STM8的ADC读取---STM8-第四章
1. 综诉 想学会如何在STM8上使用ADC这个功能,我们先得了解单片机中ADC究竟是什么. ADC是模拟信号转成数值信号,单片机只能识别TTL电平,其实就是 1 或者 0 ,但是如果我们给它一个3. ...
- vs2008 点击"转到定义"为什么是"未定义符号"
1.有可能是VA未安装正确,但是我遇到的情况是我的VA安装正确的. 2.我的解决办法:删掉工程的.ncb文件后重新编译即可:以前也遇到过断点打不上去的事情,也是删掉.ncb后重新编译就可以了. 附带一 ...
- 对Unity一个Shader编译Bug的分析(Unrecognized sampler 'samplerunity_lightmap)
写在前面 Unity的用户量越来越大,越来越有钱,这几年摊子也铺的越来越大,所以各个版本总是有很多Bug.对于一些Bug官方在ReleaseNote里的说明是很不详细的,而对于一些渲染相关的Bug,有 ...
- CentOS 7修改系统时间及硬件时间
转载于:https://www.cnblogs.com/LouisZJ/p/8554991.html [root@nginx ~]# timedatectl --help timedatectl [O ...
- 在chrome console中添加jQuery
由于现有seajs等封装,jQuery等已不在全局暴露,即使网站中已使用jQuery,在console也使用不了. 在chrome中可以用以下代码加入jQuery: fetch('http://cod ...
- LayaAir疑难杂症之二:字符输入限制不生效(多个限制条件该如何赋值给restrict)
问题描述 采用LayaAir进行开发,在使用TextInput时,对restrict属性进行赋值,使该输入框只允许输入中英文.数字,restrict = “[\u4E00-\u9FA5A-Za-z ...
- resttemlate
package com.xjj; import java.util.List; import java.util.Map; import java.util.stream.Collectors; im ...
- 基于bootstrap table配置的二次封装
准备 jQuery js css 引用完毕 开始 如果对bootstrap table 的方法与事件不熟悉: Bootstrap table方法,Bootstrap table事件 <table ...