hadoop——安装配置及简单API操作

记录下hadoop集群的安装配置过程,步骤还挺多的,方便以后查看复习。

 

1、关闭防火墙

# 关闭命令
service iptables stop
systemctl stop firewalld.service
# 永久关闭防火墙
chkconfig iptables off
# 查看防火墙关闭状态
service iptables status
View Code

 

2、安装GCC

yum install gcc
View Code



3、安装jdk配置环境变量

cd download/
pwd
tar -zxf jdk-8u162-linux-x64.tar.gz
ls
mv jdk1.8.0_162/ java
mv java/ /usr/local/
cd /usr/local/java/
ls
View Code



编辑配置文件

vi /etc/profile

后续补图。。。

刷新配置文件

source profile


检测

java
javac



4、在hosts中添加主、从主机名

vi /etc/hosts

后续补图。。。



5、配置免密登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
View Code

打开authorized_keys,将主从(t1 t2 t3)中的私钥配置成一样的
后续补图。。。


6、安装hadoop配置环境变量

cd download/
tar -zxf hadoop-2.7.1.tar.gz
ls
cd
mkdir hadoopserver
cd hadoopserver/
cd /
cd
cd download/
mv hadoop-2.7.1 /root/hadoopserver/
cd
cd hadoopserver/
View Code

编辑配置文件

vi /etc/profile

后续补图。。。


刷新配置文件

source profile

 

检测

hadoop


查看所有环境变量

echo $PATH

 

7、在主上安装lrzsz

yum install lrzsz



8、在hadoop根目录下创建temp、hdfs目录

cd /usr/local/hadoop/hadoopserver/hadoop-2.7.1/
ls
mkdir temp
mkdir -p hdfs/name
mkdir -p hdfs/data
ls



9、修改主上hadoop目录下/etc/hadoop/的配置文件
注意:复制mapred-site.xml.template为mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

后续补图。。。

 

10、将主上的java、hadoop、hosts、profile都复制到从上

scp -r /usr/local/java root@t2:/usr/local
scp -r /usr/local/java root@t3:/usr/local

scp /etc/hosts root@t2:/etc/
scp /etc/hosts root@t3:/etc/

scp /etc/profile root@t2:/etc/
scp /etc/profile root@t3:/etc/    

scp -r hadoop root@t2:/usr/local/
scp -r hadoop root@t3:/usr/local/
View Code

注意:在从上刷新配置文件

source /etc/profile

 

11、格式化hadoop

/usr/local/hadoop/hadoopserver/hadoop-2.7.1/bin/hdfs namenode -format

# 或者
cd hadoop/hadoopserver/hadoop-2.7.1/
cd bin/
./hdfs namenode -format
View Code

 

12、启动hdfs服务

cd sbin/
ll
start-dfs.sh
ll
jps
start-yarn.sh

检测
curl http://192.168.1.201:50070 

浏览器检测
http://192.168.1.201:50070

http://192.168.1.201:8099

 

注意:如果不能访问,关闭防火墙

systemctl stop firewalld.service

注意:如果页面上的节点只能显示一个,删除VERSION文件,重启服务

cd hdfs/
ls
cd ../temp/
ls
cd dfs
ls
cd namesecondary/
ls
cd current/
ls
rm VERSION
View Code

 

启动所有服务

start-all.sh

 



13、练习

mkdir temp
ls
cd temp/
ls
touch test
ll
fs -ls /
hadoop fs -ls /
hadoop fs -mkdir /input
hadoop fs -ls /
hadoop fs -mkdir /output
ll
hadoop fs -ls /
hadoop fs -put test /input
View Code

 

# 查看目录
hadoop fs -ls /input

# 创建文件
hadoop fs -touchz /input/test

# 查看文件
hadoop fs -cat /input/test

# 删除文件
hadoop fs -rm /input/test

 

 code

package com.sunjian;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;

import java.io.IOException;


/**
 * hadoop简单API操作
 * @author sunjian
 * @date 2020/4/19 12:27
 */
public class Test1 {
    public static void main(String[] args) {
        // 强制加载
        System.load("C:\\Software\\hadoop\\bin\\hadoop.dll");

        // 指定用户,指定Hadoop的根目录
        System.setProperty("HADOOP_USER_NAME", "root");
        System.setProperty("hadoop.home.dir", "C:\\Software\\hadoop");

        // 创建与hdfs的链接
        Configuration conf = new Configuration();
        // 与core-set.xml中配置的保持一致
        conf.set("fs.defaultFS", "hdfs://192.168.1.201:9000");

        // hdfs的操作,和我们在java中操作file大同小异
        FileSystem fs = null;
        FSDataOutputStream out = null;
        FSDataInputStream in = null;

        try {
            // 获取文件系统
            fs = FileSystem.get(conf);
            // 判断是否是文件
//            System.out.println(fs.isFile(new Path("/input"))); // false

            // 判断是否是目录
//            System.out.println(fs.isDirectory(new Path("/input"))); // true

            // 查看子文件或者子目录
//            FileStatus[] list = fs.listStatus(new Path("/"));
//            for(FileStatus status : list){
//                System.out.println(status.getGroup());
//                System.out.println(status.getOwner());
//                System.out.println(status.getPath());
//            }

            /* 流操作 */
            // 输出流 写
//            out = fs.append(new Path("/input/test2"));
//            out.write("这是HDFS的文件流 啊啊啊!!!".getBytes());
//            out.flush();
//            System.out.println("success");

            // 输入流 读
            in = fs.open(new Path("/input/test2"));
            byte[] bs = new byte[in.available()];
            in.read(bs);
            System.out.println(new String(bs));

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fs != null) {
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

 

  

 

 

 

 

 

 

 

 

 

OK.

posted on 2020-04-10 08:56  乘除减加  阅读(344)  评论(0)    收藏  举报

导航

作者:乘除减加 出处: 本文版权归 乘除减加 所有,欢迎转载但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以微信:15510211823 联系我,非常感谢。