linux之hadoop安装

安装条件:

 redhat centos7 java1.8 hadoop3.2.1

前言:

此次安装重在配置!

各个虚拟机之间root用户之间的ssh免密登录:

https://blog.csdn.net/mo_ing/article/details/81042816

1、在node01上生产一对钥匙(公钥和私钥)

首先在root用户下,执行

    #ssh-keygen -t rsa

一路回车,接着会产生在/root目录下会产生.ssh目录

查看  .ssh 目录,会发现它下面生成了两个 id_rsa  , id_rsa.pub文件

linux之hadoop安装_第1张图片

known_hosts文件是通过ssh node02(就是通过ssh登录其他主机)产生的,而不是通过执行ssh-keygen -t rsa命令产生,请不要弄错。

2、在node01上将公钥(id_rsa.pub)拷贝到其它节点,包括本机

    #ssh-copy-id ip或hostname

3、在node02节点上和node03节点都要重复上述1、2操作,分别产生各自的一对钥匙,并拷贝到其它节点(包括本机)

安装jdk并配置环境:

    查看《linux之springboot项目》

下载安装hadoop:

    #cd /usr/local/src

    #wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

    # tar -xvf hadoop-3.2.1.tar.gz -C /usr/local/

linux之hadoop安装_第2张图片


linux之hadoop安装_第3张图片
src的需要编译,tar.gz的只需要解压


    #cd /usr/local/

    #sudo mv ./hadoop-3.2.1/ ./hadoop  修改文件夹名称

    # sudo chown -R hadoop ./hadoop  如果另创用户hadoop,则赋予权限

    Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

            #cd /usr/local/hadoop/

            #./bin/hadoop version

修改配置文件:

    在/etc/profile中,添加下面配置:

        export  HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

        export  HADOOP_HOME=/usr/local/hadoop/

        export  HADOOP_OPTS="- Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

        同时将hadoop添加到系统变量:

                export PATH=$PATH:$/usr/local/hadoop/bin:$PATH

【后续出现的 ./bin/...,./etc/... 等包含 ./ 的路径,均为相对路径,以 /usr/local/hadoop 为当前目录。】

     在hadoop-env.sh中添加:

        export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"  



    伪分布式:

        Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

        Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件core-site.xmlhdfs-site.xml。

修改配置文件core-site.xml(通过 gedit 编辑会比较方便:gedit ./etc/hadoop/core-site.xml),将当中的

修改为下面配置:

    

        hadoop.tmp.dir

        file:/usr/local/hadoop/tmp

        Abase for other temporary directories.

    

    

        fs.defaultFS

        hdfs://ip地址:9000

    

同样的,修改配置文件hdfs-site.xml

    

        dfs.replication

        1

    

    

        dfs.namenode.name.dir

         file:/usr/local/hadoop/tmp/dfs/name

    

    

        dfs.datanode.data.dir

        file:/usr/local/hadoop/tmp/dfs/data

    

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行,所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。


配置完成后,执行 NameNode 的格式化:

    #./bin/hdfs namenode -format

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。


linux之hadoop安装_第4张图片

开启 NameNode 和 DataNode 守护进程:

    # ./sbin/start-dfs.sh

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。


问题集锦:

1、WARNING: HADOOP_SECURE_DN_USER has been replaced by DFS_DATANODE_SECURE_USER. 

    将 sbin/start-dfs.sh 和 vim sbin/stop-dfs.sh 两个文件中的一下内容:

    HDFS_DATANODE_USER=root

    HADOOP_SECURE_DN_USER=hdfs

    HDFS_NAMENODE_USER=root

    HDFS_SECONDARYNAMENODE_USER=root

    转换为:

    HDFS_DATANODE_USER=root

    HDFS_DATANODE_SECURE_USER=hdfs

    HDFS_NAMENODE_USER=root

    HDFS_SECONDARYNAMENODE_USER=root


    如果还报错 可以考虑检查$HADOOP_HOME/etc/hadoop/ 目录下的hadoop-env.sh:

    export HDFS_DATANODE_USER=root

    export HADOOP_SECURE_DN_USER=hdfs

    export HDFS_NAMENODE_USER=root

    export HDFS_SECONDARYNAMENODE_USER=root

    export YARN_RESOURCEMANAGER_USER=root

    在第二行发现问题,将

    export HADOOP_SECURE_DN_USER=hdfs

    修改为

    HDFS_DATANODE_SECURE_USER=hdfs


2、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable :

    开启debug方便找原因

    # export HADOOP_ROOT_LOGGER=DEBUG,console

    # ./sbin/start-dfs.sh 启动并查看debug报错信息:

    Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError,这表明是java.library.path出了问题。

    需在hadoop-env.sh中添加:

        export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"  

3、执行 hadoop fs -ls时报错:hadoop:commend not find

    #vi /etc/profile

    将hadoop添加到系统变量中:

        export PATH=$PATH:$/usr/local/hadoop/bin:$PATH

    #source /etc/profile

4、问题过程中遇到的比较好的链接:

http://blog.csdn.net/l1028386804/article/details/51538611

http://blog.csdn.net/xichenguan/article/details/38797331

http://www.chinahadoop.cn/classroom/5/thread/43

http://www.powerxing.com/install-hadoop-in-centos/

5、比较好的安装教程:
完全分布式:

    https://blog.csdn.net/s1078229131/article/details/93846369

集群搭建:

    https://blog.csdn.net/qq_41515513/article/details/101873098

你可能感兴趣的:(linux之hadoop安装)