Java操作HDFS分布式文件存储?我来教你Java可视化操作大数据分析! admin 2023-05-25 09:48:01 篇首语:本文由小编为大家整理,主要介绍了Java操作HDFS分布式文件存储?我来教你Java可视化操作大数据分析!相关的知识,希望对你有一定的参考价值。 hello,各位小伙伴,好久不见,甚是想念啊,博主开学了,最近也是乱忙一通,抽个空闲暇之余,我来教大家使用Java实现HDFS大数据分析工具,好玩又有趣,快来看看吧! (在此之前,请大家准备好Hadoop-2.7.4-jar,电脑已安装好hadoop环境,配置虚拟机三台样机,master,slave1,slave2,其实名字用啥无所谓啦,重点在需要在三台虚拟机内部搭建好ssh免密登陆访问,可以使用普通用户身份去完成,建议不要管理员,毕竟有风险。。。Linux系统任意-最佳centos6.8以上。安装好Java服务和hadoop服务,并配置好环境变量。) 开发工具选择的依旧是教学常用的Eclipse,其实我也喜欢用IDEA,但是出教程的话,个人还是比较钟意Eclipse,好了,废话不多说,我们直接进入实践操作。 来看看实际效果图: 首先进入Hadoop环境搭建:为Hadoop分布式环境的搭建 准备一台虚拟机 *准备过程 1. 复制Linux安装文件centos6.5到D:\bigdata (或解压缩包后再改文件夹名为centos6.5)2. 在VMware Workstation Pro端打开D:\bigdata\centos6.5\master.vmx,添加虚拟机master3. 虚拟机命名为master4. 启动此虚拟机,选择我已移动此虚拟机(与原MAC地址相同),选择我已复制此虚拟机(生成新MAC地址)5. #设置网络连接:虚拟机设置 网络适配器 自定义选择仅主机模式 #查看MAC地址: 虚拟机设置 网络适配器 高级 复制MAC地址(备用) #查看IP地址:编辑 虚拟网络编辑器 查看类型为仅主机模式的子网地址192.168.109.0 #窗口切换:ctrl+G/ctrl+alt6. 登录 master login: root password:123456 Hadoop完全分布式环境搭建 一、安装节点NAMENODE 1.打开master.vmx*******命名为MASTER/master启动虚拟机时选择:我已移动此虚拟机00:0C:29:0B:F4:EC2.MAC地址、IP、网络配置(1)vi /etc/udev/rules.d/70-persistent-net.rules#ESC键 :wq!保存-->修改mac地址(2)vi /etc/sysconfig/network-scripts/ifcfg-eth0#修改IP地址为192.168.109.125(3)vi /etc/sysconfig/network #修改主机名master(slave1)和网关GATEWAY=192.168.109.1(4)service network restart #重启网络服务(5)vi /etc/hosts192.168.109.125 master192.168.109.135 slave1192.168.109.145 slave2(6)service network restart #重启网络服务 ##reboot #重启主机(7)ifconfig #查看网络配置 3.SSH免密登录 (1)vi /etc/ssh/sshd_configRSAAuthentication yes # 启用 RSA 认证PubkeyAuthentication yes # 启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(2)su - user #直接切换到user根目录下(3)mkdir .ssh#创建目录,为了放公钥文件(4)chmod 700 ~/.ssh#(ssh)文件夹的权限为700,谁建谁授权(5)ssh-keygen -t rsa -P "" #执行免密登录(config生效,生成密钥对)(6)ll -a #查看(7)cd .ssh #切换目录到.ssh下(8)cat id_rsa.pub >> authorized_keys#将公钥写到文件authorized_keys中(9)chmod 600 authorized_keys#权限设置为600(10)su root #切换到root用户下 (11)service sshd restart #启动ssh免密登录服务 (12)su - user #切换到user用户下 (13)ssh master #或者ssh 192.168.109.125 ##本机自我免密登录 二、复制节点DATANODE (关master再复制)名:SLAVE1开启虚拟机是选择:我已复制此虚拟机重新网络配置00:0C:29:85:D1:12(1)vi /etc/udev/rules.d/70-persistent-net.rules #查看mac地址(2)vi /etc/sysconfig/network-scripts/ifcfg-eth0 #修改IP地址为92.168.109.135 ##DEVICE=eth0修改为eth1 ##将MAC地址删除 HWADDR= ****(3)vi /etc/sysconfig/network #修改主机名master(slave1)和网关GATEWAY=192.168.109.1(4)service network restart #重启网络服务(5)service sshd restart #启动ssh免密登录服务(6)su - user #切换到user用户下 (7)ssh slave1 #或者ssh 192.168.109.135 ##本机自我免密登录 开启虚拟机master在master机上做免密登录slave1 ssh slave1在slave1机上做免密登录master ssh master 三、复制节点DATANODE (关slave1再复制) 名:SLAVE2 开启虚拟机时选择:我已复制此虚拟机 00:0C:29:51:B6:74 配置过程与slave1机器配置过程相同 ssh slave2ssh masterssh slave2ssh slave1ssh slave2 四、装远程访问端 1.NEW SESSION2.Remote host:192.168.109.125勾选 Specify username 点 按钮(create or manage credential)3.点 按钮 new Name : USER11 Username : user Password : 1234564. 双击 Session :192.168.109.125[USER11]5. 相同方式创建slave1和slave2的远程SESSION 安装配置JDK(使用SSH工具xshell或者Mobaxterm) 1.拖拽安装包jdk-8u121-linux-x64.tar.gz到远程端当前文件夹下(/home/user) 2.安装JDK包 (1)tar -zxvf jdk-8u121-linux-x64.tar.gz #解包 jdk1.8 (2)mv jdk1.8.0_121 jdk #文件夹改名,便于版本升级更换 3.配置环境变量 (3)vi ~/.bashrc #编辑,修改配置环境变量,注意:行前不要有空格! #set java environmentexport JAVA_HOME=/home/user/jdkexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 4.配置生效 (4)source ~/.bashrc 5.测试JDK是否安装成功 (5)javac # 或者 which java 二、配置Hadoop完全分布式 1.拖拽安装包hadoop-2.6.1.tar.gz到远程端当前文件夹下(/home/user) 2.安装hadoop (1)tar -zxvf hadoop-2.6.1.tar.gz#解hadoop包 (2)mv hadoop-2.6.1 hadoop#vi/hadoop/config#老版 3.配置完全分布式 (3)cd hadoop/etc/hadoop/#xml文件全部是配置文件 (4)vi hadoop-env.sh #修改JAVA_HOME export JAVA_HOME=/home/user/jdk (5)vi core-site.xml #留端口,让外部访问我 <property> <name>fs.defaultFS</name> <value>hdfs://master:8020</value> </property> #默认是9000,经验:hive中对接用的是8020端口,配置为9000时出错 (6)vi hdfs-site.xml <property> <name>dfs.replication</name>#备份几份(1份) <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> #主节点上的信息,切完之后具体信息存放在什么位置上 <value>/home/user/hadoop/dfs/name</value> #映射文件存放位置 </property> <property> <name>dfs.datanode.data.dir</name>#数据存放位置 <value>/home/user/hadoop/dfs/data</value> </property> (7)mv mapred-site.xml.template mapred-site.xml#改名 (8)vi mapred-site.xml<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> (9)vi slaves#所有数据节点的IP地址都写在这里#写到slaves文件/DATANODEmasterslave1slave2 (10)vi yarn-site.xml #yarn,共享程序 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> Hadoop平台的格式化 1.配置Hadoop环境变量 #user用户下:#专业人员用旗舰版 (1)vi ~/.bashrc #set hadoop environmentexport HADOOP_PREFIX=/home/user/hadoopexport PATH=$HADOOP_PREFIX/bin:$PATHexport PATH=$PATH:$HADOOP_PREFIX/sbin (2)source ~/.bashrc 2.格式化Hadoop平台 (3)hadoop namenode -format3.复制master机的hadoop、JDK文件夹到slave1机上scp -r ~/hadoop user@slave1:~/hadoopscp -r ~/hadoop user@slave2:~/hadoopscp -r ~/jdk user@slave1:~/jdkscp -r ~/jdk user@slave2:~/jdkscp -r ~/.bashrc user@slave1:~/.bashrcscp -r ~/.bashrc user@slave2:~/.bashrcslave1 和 slave2上分别 source ~/.bashrc(环境变量设置生效,JPS命令) 4.启动Hadoop平台 (4)start-all.sh 5.查看进程 (5)jpsslave1 和 slave2上分别 source ~/.bashrc(环境变量设置生效,JPS命令才好使)*******************************************************四、其它启动命令参考 hadoop-daemon.sh start namenode hadoop-daemon.sh start datanode yarn-daemon.sh start resourcemanager Windows上安装部署hadoop与Java大家可以自行百度一下,我就不多说啦!接下来直接进入HDFS大数据分析工具软件的开发: 项目结构展示: 效果图再放一下: 小贴士:在工具类中调用画图API的时候,这里的画图的API与原项目不在同一个类中,也不再同一个包中,怎么解决呢?可以将项目添加入依赖中,然后在类中引入依赖即可。在父类中创建成员属性,用子类去继承属性,然后就可以全局调用,注意使用关键字:volatile package com.sinsy.fntp;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.wb.swt.SWTResourceManager;import com.sinsy.fntp.hdfs.HDFS_API;import com.sinsy.utils.CreateBingtu;import org.eclipse.swt.widgets.Composite;import java.util.Date;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.MenuItem;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Text;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Image;public class Main extends yupublic Shell shlv;public Setting set = new Setting ();public HDFS_API hdfs = new HDFS_API();public Text lb_lcoalAddress;public Text lb_connect_port;public Text lb_current_dir;public Text lb_fileNumber;public Text log;public CreateBingtu image_bingtu = new CreateBingtu();/** * Launch the application. * @param args */public static void main(String[] args) try Main window = new Main();window.open(); catch (Exception e) e.printStackTrace();/** * Open the window. */public void open() Display display = Display.getDefault();createContents();shlv.open();shlv.layout();while (!shlv.isDisposed()) if (!display.readAndDispatch()) display.sleep();/** * Create contents of the window. */protected void createContents() Display display = Display.getDefault();shlv = new Shell(display,SWT.MIN);shlv.setImage(SWTResourceManager.getImage(Main.class, "/img/01.jpg"));shlv.setSize(451, 557);shlv.setText("\u946B\u8F6F\u5927\u6570\u636E\u5206\u6790V1.0.1");Composite panel_main = new Composite(shlv, SWT.BORDER);panel_main.setBounds(10, 0, 425, 441);Composite composite = new Composite(panel_main, SWT.BORDER);composite.setBounds(0, 75, 421, 362);Label lblhdfs = new Label(composite, SWT.NONE);lblhdfs.setBounds(153, -3, 113, 17);lblhdfs.setText("\u5F53\u524DHDFS\u8BE6\u7EC6\u4FE1\u606F");Label lblhdfs_1 = new Label(composite, SWT.NONE);lblhdfs_1.setBounds(10, 16, 113, 17);lblhdfs_1.setText("\u5F53\u524DHDFS\u94FE\u63A5\u5730\u5740\uFF1A");Label lblhdfs_2 = new Label(composite, SWT.NONE);lblhdfs_2.setBounds(10, 39, 113, 17);lblhdfs_2.setText("\u5F53\u524DHDFS\u8FDE\u63A5\u7AEF\u53E3\uFF1A");Label lblhdfs_3 = new Label(composite, SWT.NONE);lblhdfs_3.setBounds(10, 62, 113, 17);lblhdfs_3.setText("\u5F53\u524DHDFS\u6240\u5904\u76EE\u5F55\uFF1A");Label lblhdfs_4 = new Label(composite, SWT.NONE);lblhdfs_4.setBounds(10, 85, 113, 17);lblhdfs_4.setText("\u5F53\u524DHDFS\u6587\u4EF6\u6570\u91CF\uFF1A");Composite composite_1 = new Composite(composite, SWT.BORDER);composite_1.setBounds(0, 113, 417, 222);Label lblNewLabel = new Label(composite_1, SWT.NONE);lblNewLabel.setBounds(146, 0, 145, 17);lblNewLabel.setText("\u5F53\u524DHDFS\u6587\u4EF6\u6570\u636E\u5206\u6790\u56FE");Label lb_main = new Label(composite_1, SWT.NONE);lb_main.setImage(SWTResourceManager.getImage(Main.class, "/img/07.jpg"));lb_main.setBounds(10, 23, 393, 185);Composite composite_2 = new Composite(composite, SWT.BORDER);composite_2.setBounds(0, 337, 417, 21);Label lblip = new Label(composite_2, SWT.NONE);lblip.setFont(SWTResourceManager.getFont("Microsoft YaHei UI", 10, SWT.NORMAL));lblip.setBounds(10, 0, 71, 17);lblip.setText("\u5F53\u524D\u4E3B\u673AIP\uFF1A");Label lb_hostIP = new Label(composite_2, SWT.NONE);lb_hostIP.setFont(SWTResourceManager.getFont("Microsoft YaHei UI", 10, SWT.NORMAL));lb_hostIP.setBounds(87, 0, 126, 17);lb_hostIP.setText("X.X.X.X");Label lblNewLabel_6 = new Label(composite_2, SWT.NONE);lblNewLabel_6.setFont(SWTResourceManager.getFont("Microsoft YaHei UI", 10以上是关于Java操作HDFS分布式文件存储?我来教你Java可视化操作大数据分析!的主要内容,如果未能解决你的问题,请参考以下文章 Element-ui(Cascader 级联选择器)实现三级联动 Matlab2016b线性规划函数linprog的几个问题 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号