一、安装java

二、IntelliJ IDEA(2018)安装和破解与初期配置 参考链接

1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/download/#section=windows,选择收费版,下面再破解

2.点击下载进入下载页开始下载,如果没有弹出下载框,请点击图中位置

3.下载之后双击,开始安装,点击next

4.选择安装路径,最好不要安装到C盘,这里我安装到D盘IDEA文件夹,点击next

5.选择安装32位或者64位的,根据你电脑选择,点击next

6.这里默认就行了,点击install

7.开始安装

.

8.安装完成,勾选启动

9.点击OK

.

10.点击接受

11.破解

1.下载破解补丁JetbrainsCrack-2.6.2.jar 地址:http://download.csdn.net/detail/gnail_oug/9824630

或者 http://idea.lanyus.com/

2.将你下载好的JetbrainsCrack-2.6.2.jar拷贝到你的Idea安装目录的bin目录下,如下图红色框所示

3.在安装的idea下面的bin目录下面有2个文件 : 一个是idea64.exe.vmoptions,还有一个是idea.exe.vmoptions(如上图绿框)。

用记事本打开 分别在最下面一行增加一行:-javaagent:D:\IDEA\bin\JetbrainsCrack-2.6.2.jar

注意:“D:\IDEA\bin\JetbrainsCrack-2.6.2.jar”是我对应的JetbrainsCrack-2.6.2.jar的位置,你用你自己的安装路径。

4.重新启动软件,再到Acrivation code中选择界面的时候,写入下面注册代码(到2099年到期)

ThisCrackLicenseId-{
"licenseId":"ThisCrackLicenseId",
"licenseeName":"idea",
"assigneeName":"",
"assigneeEmail":"idea@163.com",
"licenseRestriction":"For This Crack, Only Test! Please support genuine!!!",
"checkConcurrentUse":false,
"products":[
{"code":"II","paidUpTo":"2099-12-31"},
{"code":"DM","paidUpTo":"2099-12-31"},
{"code":"AC","paidUpTo":"2099-12-31"},
{"code":"RS0","paidUpTo":"2099-12-31"},
{"code":"WS","paidUpTo":"2099-12-31"},
{"code":"DPN","paidUpTo":"2099-12-31"},
{"code":"RC","paidUpTo":"2099-12-31"},
{"code":"PS","paidUpTo":"2099-12-31"},
{"code":"DC","paidUpTo":"2099-12-31"},
{"code":"RM","paidUpTo":"2099-12-31"},
{"code":"CL","paidUpTo":"2099-12-31"},
{"code":"PC","paidUpTo":"2099-12-31"}
],
"hash":"2911276/0",
"gracePeriodDays":7,
"autoProlongated":false}

  

5.能够进入应用界面,说明破解成功(如果还不成功去http://idea.lanyus.com/这个网站看一下)

12.配置 File >> Settings... (Ctrl + Alt + S)

1.关闭reopen选项,打开Intellij IDEA 时不会默认打开上次关闭的项目

2.安装maven

2.1 解压apache-maven-3.3.9文件夹放到D盘根目录  apache-maven-3.3.9压缩文件下载

2.1修改maven的settings.xml配置,在apache-maven-3.3.9/conf/settings.xml 已经配置好了,直接使用即可

2.2 在D盘目录下,创建一个m2文件夹

2.3 将刚才修改后的settings.xml文件移动到该m2文件夹下

2.4 修改idea中关于maven的配置(检查setttings和defaultSettings中的maven设置是否一样)

3.项目编码设置(一共6处修改)

File >> Settings ...
File >> Other settings >> Settings for New Projects ...

4.创建项目

设置JDK主目录路径

File >> Projects structure ... (Ctrl + Shift + Alt + S)  >>  如下两图,设置你自己java的安装路径


5.导入依赖

View >>  Tool windows >> Maven Projects


6.常用快捷键

ctrl + shift + enter:补全代码后方缺失的符号
shift + enter:直接换行
ctrl + alt + t:弹出可以包裹当前代码的语法列表
alt + enter:相当于eclipse的ctrl + 1,错误智能修复提示
ctrl + p:提示当前方法可以传递的参数类型以及参数个数
ctrl + d:复制当前行到下一行,类似eclipse中的ctrl + alt + 光标下
ctrl + x:剪切当前光标所在行
ctrl + y:删除当前光标所在行
ctrl + shift + 光标上或下:移动当前行代码
ctrl + alt + 光标左右:可以在查看代码的时候,切换上一次或下一次查看的视图
ctrl + o::弹出当前类中可以覆写的方法列表
ctrl + alt + v:生成一个变量接受某个方法返回的值

ctrl + shift + i : 查看方法定义代码

HDFS中的常用API操作

在项目中创建一个HDFSClient的java类

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test; import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream; /*
* 使用javaAPI来操作hdfs
*/
public class HDFSClient {
/*
* 在hdfs中创建文件夹
*/
@Test
public void testMkdir() throws URISyntaxException, IOException, InterruptedException {
/*
* util.Shell: Failed to locate the winutils binary in the hadoop binary path
* 解决办法:
* 1.下载winutils.exe 链接:http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
* 2.创建文件夹,比方说 D:\winutils\bin
* 3.复制winutils.exe里面D:\winutils\bin
* 4.将环境变量设置HADOOP_HOME为D:\winutils
* 5.System.setProperty("hadoop.home.dir", "D://winutils");
*/
System.setProperty("hadoop.home.dir", "D://winutils"); // 创建配置文件对象
Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin"); fileSystem.mkdirs(new Path("/user/admin/404")); fileSystem.close();
} /*
* 下载文件
*/
@Test
public void testCopytoLocalFile() throws URISyntaxException, IOException, InterruptedException{
System.setProperty("hadoop.home.dir", "D://winutils");
// 创建配置文件对象
Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin"); fileSystem.copyToLocalFile(
false,
new Path("/user/admin/403/hello_world2.txt"),
new Path("d:\\copy_words.txt")
); fileSystem.close(); } /**
* 文件删除
*/
@Test
public void testDelete() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
fileSystem.delete(new Path("/user/admin/403/"), true);
fileSystem.close();
} /**
* 上传文件
* JavaAPI在操作文件 上传时,如果文件已经存在于HDFS中,则先删除HDFS中的文件,再上传
* 但是如果使用shell操作,则会提示,该文件已存在
*/
@Test
public void testCopyFromLocal() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
// fileSystem.copyFromLocalFile(new Path("d:\\copy_words.txt"), new Path("/"));
fileSystem.copyFromLocalFile(new Path("d:" + File.separator + "copy_words.txt"), new Path("/"));
fileSystem.close();
} /**
* 重命名文件
*/
@Test
public void testReanme() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
fileSystem.rename(new Path("/user/admin/403/abc.txt")
, new Path("/user/admin/403/aaa.txt"));
fileSystem.close();
} /**
* 展示目录列表
*/
@Test
public void testListFile() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
RemoteIterator<LocatedFileStatus> listFiles = fileSystem.listFiles(new Path("/"), true);
while(listFiles.hasNext()){
LocatedFileStatus fileStatus = listFiles.next();
System.out.println("文件名称:" + fileStatus.getPath().getName());
System.out.println("文件长度:" + fileStatus.getLen());
System.out.println("文件权限:" + fileStatus.getPermission());
System.out.println("文件所属组" + fileStatus.getGroup());
//文件块信息
BlockLocation[] blockLocations = fileStatus.getBlockLocations();
for(BlockLocation blockLocation : blockLocations){
String[] hosts = blockLocation.getHosts();
for(String host : hosts){
System.out.println(host);
}
}
System.out.println("--------------这是一个毫无用处的分割线--------------------");
}
} /**
* 罗列目录或文件
*/
@Test
public void testListStatus() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));
for(FileStatus status : listStatus){
if(status.isFile()){
System.out.println("文件:" + status.getPath().getName());
}else{
System.out.println("目录:" + status.getPath().getName());
}
}
fileSystem.close();
} /**
* 通过流的操作上传一个文件到HDFS
*/
@Test
public void putFileToHDFS() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin");
//读取当前操作系统本地的文件
FileInputStream inputStream = new FileInputStream(new File("d:\\copy_words.txt"));
//创建HDFS的输出流,用于将本地文件流中的数据拷贝到HDFS中
FSDataOutputStream outputStream = fileSystem.create(new Path("/jinji_words.txt"));
//流的对拷
IOUtils.copyBytes(inputStream, outputStream, conf);
fileSystem.close();
} /**
* 通过流的方式,下载文件
*/
@Test
public void getFileFromHDFS() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin"); FSDataInputStream inputStream = fileSystem.open(new Path("/hello_world.txt"));
FileOutputStream outputStream = new FileOutputStream(new File("d:\\demo.txt"));
IOUtils.copyBytes(inputStream, outputStream, conf);
fileSystem.close();
} /**
* 按照文件块进行下载
* 可以在下载文件的过程中,设置每次要下载的字节数
* 例如:我们下载一个文件的一个文件块 自己上传一个bin/hdfs dfs -put ~/softwares/installtions/hadoop-2.7.2.tar.gz /
* 下载hadoop安装包(200多兆)的第一个文件块(128M)
*/
@Test
public void readFileSeek1() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin"); FSDataInputStream inputStream = fileSystem.open(new Path("/hadoop-2.7.2.tar.gz"));
FileOutputStream outputStream = new FileOutputStream(new File("d:\\hadoop-2.7.2.tar.gz.part1"));
byte[] bytes = new byte[1024];//一次读取1KB的数据 for(int i = 0; i < 1024 * 128; i++){
inputStream.read(bytes);
outputStream.write(bytes);
}
IOUtils.closeStream(inputStream);
IOUtils.closeStream(outputStream);
} /**
* 下载第二个文件块
*/
@Test
public void readFileSeek2() throws URISyntaxException, IOException, InterruptedException {
System.setProperty("hadoop.home.dir", "D://winutils");
Configuration conf = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.1.213:8020"), conf, "admin"); FSDataInputStream inputStream = fileSystem.open(new Path("/hadoop-2.7.2.tar.gz"));
FileOutputStream outputStream = new FileOutputStream(new File("d:\\hadoop-2.7.2.tar.gz.part2")); inputStream.seek(128 * 1024 * 1024);
// IOUtils.copyBytes(inputStream, outputStream, conf);
//与上边的操作等价:
byte[] bytes = new byte[1024];//一次读取1KB的数据 for(int i = 0; i < 77829046/1024; i++){
inputStream.read(bytes);
outputStream.write(bytes);
}
IOUtils.closeStream(inputStream);
IOUtils.closeStream(outputStream); fileSystem.close();
} }

  

注意:把linux下面/home/admin/modules/hadoop-2.7.2/etc/hadoop文件夹中的log4j.properties、core-site.xml、 hdfs-site.xml、mapred-site.xml、yarn-site.xml五个文件复制到wiondw下面项目中的:项目路径\src\main\resources 文件夹中

大数据(5) - HDFS中的常用API操作的更多相关文章

  1. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  2. 大数据除了Hadoop还有哪些常用的工具?

    大数据除了Hadoop还有哪些常用的工具? 1.Hadoop大数据生态平台Hadoop 是一个能够对大量数据进行分布式处理的软件框架.但是 Hadoop 是以一种可靠.高效.可伸缩的方式进行处理的.H ...

  3. 漫谈ELK在大数据运维中的应用

    漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...

  4. jackson学习之三:常用API操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Java+大数据开发——HDFS详解

    1. HDFS 介绍  • 什么是HDFS 首先,它是一个文件系统,用于存储文件,通过统一的命名空间--目录树来定位文件. 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角 ...

  6. 我要进大厂之大数据Hadoop HDFS知识点(1)

    01 我们一起学大数据 老刘今天开始了大数据Hadoop知识点的复习,Hadoop包含三个模块,这次先分享出Hadoop中的HDFS模块的基础知识点,也算是对今天复习的内容进行一次总结,希望能够给想学 ...

  7. hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

    sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...

  8. 老李分享:大数据测试之HDFS文件系统

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  9. 大数据学习——hdfs客户端流式操作代码的实现

    package cn.itcast.bigdata.hdfs.diceng; import org.apache.hadoop.conf.Configuration; import org.apach ...

随机推荐

  1. 使用Python的turtle模块画出简单的柱状图

    代码如下: import turtle heights = [856, 420,360,260,205] def main(): t = turtle.Turtle() t.hideturtle() ...

  2. Android UI Material Design

    Material Design 中文版: http://wiki.jikexueyuan.com/project/material-design/ Material Design开发文章系列1:App ...

  3. FTTB FTTC FTTH FTTO FSA

    FTTB Fiber to The Building 光纤到楼 FTTC Fiber to The Curb 光纤到路边 FTTH Fiber to The Home 光纤到家 FTTO Fiber ...

  4. gitk图形界面中文乱码情况

    当打开gitk图形界面时,文件中的中文部分乱码了,这大部分是因为编码格式的问题,为了跟上时代的脚步,本人建议都是用utf-8编码. 为了方便,我将全局配置为utf-8编码: git config -- ...

  5. HTMLTestRunner美化

    https://www.cnblogs.com/findyou/p/6925733.html 参考这个,美化的不错,进入了汉化,及加入了一些样式,

  6. Hive使用简介

    ---恢复内容开始--- 指定分隔符 HIVE输出到文件的分隔符 ,列与列之间是'\1'(ASCII码1,在vim里显示为^A),列内部随着层数增加,分隔符依次为'\2','\3','\4'等. 例: ...

  7. 【译】你对position的了解有多少?

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

  8. 转:使用gradle 构建编译程序

    https://rinvay.github.io/android/2015/04/09/Build-Android-with-Gradle/

  9. Android中的Service组件具体解释

    Service与Activity的差别在于:Service一直在后台执行,他没实用户界面,绝不会到前台来. 一,创建和配置Service 开发Service须要两个步骤:1.继承Service子类,2 ...

  10. python中的ord,chr函数

    chr().unichr()和ord() chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符 ...