• 伪分布式Hadoop(专业见习)


    step1 关闭防火墙

    systemctl disable firewalld.service

     

    step2 需要修改主机名

    hostnamectl set-hostname 你想叫的名

     

    step3 将IP和主机名进行映射

    vim /etc/hosts
    添加 IP 主机名
    例如 192.168.33.27 anyi
    :wq

     

    step4 根目录下新建个java和Hadoop目录吧,文件xftp移进去

    mkdir /java
    cd /java
    tar -xzvf jdk-8u171-linux-x64.tar.gz -C /java

    mkdir hadoop
    cd /hadoop
    tar -xzvf hadoop-2.7.3.tar.gz -C /hadoop

     

    step5 添加java系统路径

    vi /etc/profile
    export JAVA_HOME=/java/jdk1.8.0_171
    export CLASSPATH=$JAVA_HOME/lib
    export PATH=$JAVA_HOME/bin:$PATH
    :wq

     

    step6 配置hadoop文件

    cd /hadoop/hadoop-2.7.3/etc/hadoop
    接下来要编辑的文件全在这个目录

    vi hadoop-env.sh
    (修改)以下内容
    export JAVA_HOME=/java/jdk1.8.0_171
    export HADOOP_CONF_DIR=/hadoop/hadoop-2.7.3/etc/hadoop
    :wq

    内容都粘贴至<configuration>便签内,注意缩进
    vi core-site.xml
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://你主机名:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/hadoop/hadoop-2.7.3/tmp</value>
    </property>
    :wq

    vi hdfs-site.xml
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    :wq

    cp mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    :wq

    vi yarn-site.xml
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>你主机名</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    :wq

    vi slaves
    添加个你的主机名
    :wq

     

    step7 添加hadoop系统路径

    vim /etc/profile
    添加以下内容
    export HADOOP_HOME=/hadoop/hadoop-2.7.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    重启配置
    source /etc/profile

     

    step8 格式化与启动服务

    hadoop namenode -format
    如果看到以下文字
    common.Storage: Storage directory /hadoop/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
    表示格式化没有问题

    start-all.sh
    启动服务
    jps
    出现6条则成功

     

    step9 开始表演

    打开浏览器登录
    http://你的Ip:50070
    http://你的Ip:8088
    有两个服务器网页
    上传个文件看看
    hadoop fs -put /hadoop/hadoop-2.7.3.tar.gz /
    没有提示则上传成功
    在http://你的Ip:50070上Utilities下的Browse目录上就可以看到你上传的文件

     

    Step10 导包

    打开ecplice新建一个Java项目进行导包:

    将hadoop-2.7.1_64bit.tar.gz解压
    hadoop-2.7.1_64bit/hadoop-2.7.1/share/hadoop/common 下的三个.jar文件
    hadoop-2.7.1_64bit/hadoop-2.7.1/share/hadoop/common/lib 下所有.jar文件
    hadoop-2.7.1_64bit/hadoop-2.7.1/share/hadoop/hdfs 下的三个.jar文件
    hadoop-2.7.1_64bit/hadoop-2.7.1/share/hadoop/hdfs/lib 下所有.jar文件

    虚拟机里touch 个 a.txt,上传测试

    ——已更新作业答案——上传促销日期(spec.txt)

    package com.hadoop;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.io.Serializable;
    import java.net.URI;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    
    public class HDFSDemo {
    	
    	public static void main(String[] args) throws Exception {
    		//HDFSDemo.get();
    		//HDFSDemo.put();
    		/*System.out.println(2.0-1.9);
    		System.out.println(new Date());
    		System.out.println(new GregorianCalendar());
    		System.out.println(System.currentTimeMillis());
    		System.out.println(1634286584834l/1000/60/60/24/365);
    		System.out.println(1970+51);*/
    		//定义一个日期
    		String d="2021-06-15";
    		//将字符串类型的值转换成Date类型
    		SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
    		Date date=fmt.parse(d);
    		//获取促销日期
    		Date spec=specialDay(date, 3);//计算促销日期
    		//转换格式
    		String spec1=fmt.format(spec);
    		FileOutputStream file=new FileOutputStream("spec.txt");
    		OutputStreamWriter out=new OutputStreamWriter(file);
    		PrintWriter pw=new PrintWriter(out);
    		pw.println(spec1);
    		pw.close();
    		HDFSDemo.solve();
    		System.out.println("成功");
    	}
    	
    	//下载
    	//修饰词+返回值类型+方法名+参数列表+方法体
    	
    	public static void get() throws IOException {
    		//连接HDFS
    		//uri-连接地址
    		//conf-代码中自主指定的配置
    		Configuration conf=new Configuration();
    		
    		FileSystem fs=FileSystem.get(URI.create("hdfs://192.168.33.27:9000"),conf);
    		//指定下载文件
    		InputStream in=fs.open(new Path("/a.txt"));
    		//创建一个输出流
    		FileOutputStream out=new FileOutputStream("a.txt");
    		//读写文件
    		byte[] bs=new byte[1024];
    		int len;
    		while((len=in.read(bs))!=-1) {
    			out.write(bs,0,len);
    		}
    		//关闭
    		out.close();
    		in.close();
    		
    	}
    	
    	//上传
    	public static void put() throws Exception {
    		//连接HDFS
    		//配置Config属性
    		Configuration conf=new Configuration();
    		conf.set("dfs.replication", "3");
    		FileSystem fs=FileSystem.get(URI.create("hdfs://192.168.33.27:9000"),conf,"root");
    		//指定上传文件
    		OutputStream out=fs.create(new Path("a.txt"));
    		//创建一个输入流读取文件
    		FileInputStream in=new FileInputStream("b.txt");
    		//读写文件
    		IOUtils.copyBytes(in, out, conf);
    		in.close();
    		out.close();
    	}
    	
    	
    	//删除
    	public void delete() throws Exception {
    		Configuration conf=new Configuration();
    		FileSystem fs=FileSystem.get(URI.create("hdfs://192.168.33.27:9000"),conf,"root");
    		fs.delete(new Path("/a.txt"));
    		
    	}
    	
    	//商品促销日期
    	public static Date specialDay(Date proc,int exp){
    		Calendar cal=new GregorianCalendar();
    		cal.setTime(proc);//生产日期
    		cal.add(Calendar.MONTH, exp);//过期日
    		cal.add(Calendar.WEEK_OF_YEAR, -2);//回调2周
    		cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    		return cal.getTime();
    	}
    	
    	
    	
    	//------------------作业-------------------
    	public static void solve() throws Exception {
    		Configuration conf=new Configuration();
    		conf.set("dfs.replication", "3");
    		FileSystem fs=FileSystem.get(URI.create("hdfs://192.168.33.27:9000"),conf,"root");
    		OutputStream out=fs.create(new Path("spec.txt"));
    		out.close();
    	};
    }

     

      会发现a.txt已经下载至java文件所在路径下。

  • 相关阅读:
    一个Work Stealing Pool线程池的实现
    一步一步解剖Libevent源代码
    一步一步学习堆排序算法
    一个通用的Makefile框架
    为什么我们知道那么多道理(理论),却依然处理不好目前的生活
    SQL
    走进Java Map家族 (1)
    Java数组协变与范型不变性
    尝鲜Java 12新特性:switch表达式
    android高级UI之PathMeasure<一>--Path测量基础(nextContour、getPosTan、getMatrix、getSegment)
  • 原文地址:https://www.cnblogs.com/thx2199/p/15405688.html
Copyright © 2020-2023  润新知