zoukankan      html  css  js  c++  java
  • Hadoop安装

    研究一下hadoop,所以在这里记录一下hadoop的学习过程。

    今天先来尝试安装hadoop,hadoop软件一般都用于安装在linux系统下,似乎有说可以在windows下运行的,但毕竟还是在linux下运行效果比较好,所以这里只考虑在linux下运行安装的过程。

    我下载安装的都是最新的版本,hadoop-3.0.0.tar.gz和jdk-9.0.4_linux-x64_bin.tar.gz。需要安装虚拟机,我们将这两个文件cp到centos虚拟机上去,进行解压配置。

    我的个人目录为/home/xxx,所以将这两个压缩包文件放到这个目录下,创建一个app文件夹,将文件压缩到app文件夹下,

    tar -zxvf hadoop-3.0.0.tar.gz /home/xxx/app

    tar -zxvf jdk-9.0.4_linux-x64_bin.tar.gz /home/xxx/app

    接下来我们配置jdk的环境变量,这里我提一下,因为hadoop是用java写的,所以它需要jre的环境。

    执行:vi /ect/profile 注意权限问题

    在最上面添加

    export JAVA_HOME=/home/xxx/app/jdk-9.0.4
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/bin:$JRE_HOME/bin
    export PATH=$PATH:${JAVA_HOME}/bin
    保存退出后

    执行:source /etc/profile

    然后查询我们的java版本, java -version

    java version "9.0.4"
    Java(TM) SE Runtime Environment (build 9.0.4+11)
    Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
    就此证明jdk安装成功

    下面我们来配置hadoop

    我们来到hadoop配置文件的路径/home/xxx/app/hadoop-3.0.0/etc/hadoop

    主要我们需要修改的配置文件为:hadoop-env.sh

    我们找到:export JAVA_HOME=

    我下载的hadoop文件里面就是这样的,可能你们下载的不一样,将其修改为:export JAVA_HOME=$JAVA_HOME

    有人说这里如果直接写变量是不管用的,是hadoop的bug,但我这里是好用的,可能是最新版本进行各更新。修改之后我们进行保存退出即可

    我们来到/home/xxx/app/hadoop-3.0.0/bin
    执行./hadoop fs这时系统就会提示该命令的相关参数,如果不配置上面的JAVA_HOME就会提示没有找到JAVA_HOME路径

    现在还不算完,我们还需要进行其他的配置,我们重新返回配置路径 ,开始配置core-site.xml

     1 <configuration>
     2         <property>
     3         <!--声明hadoop默认的文件系统使用的是哪种-->
     4                 <name>fs.defaultFS</name>
     5                 <!--URI namenode地址-->
     6                 <value>hdfs://centos-1:9000/</value>
     7         </property>
     8         <property>
     9         <!--hadoop工作目录-->
    10         <name>hadoop.tmp.dir</name>
    11         <value>/home/ljs/app/hadoop-3.0.0/tmp</value>
    12         </property>
    13 </configuration>
    View Code

    下面我们来配置hdfs-site.xml

    1 <configuration>
    2 <property>
    3 <!--修改hdfs文件备份分数,默认为3,但暂时我们只有一台机器,所以需要更改为1-->
    4 <name>dfs.replication</name>
    5 <value>1</value>
    6 </property>
    7 </configuration>
    View Code

    配置mapred-site.xml

    1 <configuration>
    2     <property>
    3     <!--mapreduce程序要运行在哪个资源框架上-->
    4     <name>mapreduce.framework.name</name>
    5     <!--yarn来负责调度资源-->
    6     <value>yarn</value>
    7     </property>
    8 </configuration>
    View Code

    配置yarn-site.xml

     1 <configuration>
     2 <property>
     3 <name>yarn.resourcemanager.hostname</name>
     4 <value>centos-1</value>
     5 </property>
     6 <!-- Site specific YARN configuration properties -->
     7 <property>
     8 <name>yarn.nodemanager.aux-services</name>
     9 <value> mapreduce_shuffle</value>
    10 </property>
    11 
    12 </configuration>
    View Code

    到此hadoop基本的配置就完成了

     下面我们来格式化文件系统

    hadoop namenode -format执行后会有Storage directory /home/xxx/app/hadoop-3.0.0/tmp/dfs/name has been successfully formatted

    成功提示,注意上面配置文件中的centos都是本机域名映射,可自行替换为localhost或者127.0.0.1。这个配置似乎是有bug的,我上面明明写的是centos-1,但执行格式化会提示找不到centos1的服务器,我又将centos1域名映射添加到了hosts文件中去,接下来执行格式化成功

    下面看看hadoop的tmp文件夹下是不是有内容了

    下面我们启动start-dfs.sh和start-yarn.sh见证奇迹的时刻到了。看是否启动成功

    不幸的是报了各种错误,不知道其他人,但我这里是报了错误

    错误1

    Starting namenodes on [localhost]
    ERROR: Attempting to launch hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.

    这个问题我也是在网上查到的解决方案

    解决1:
    是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本
    $ vim 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

    错误2

    Starting resourcemanager
    ERROR: Attempting to launch yarn resourcemanager as root
    ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.
    Starting nodemanagers
    ERROR: Attempting to launch yarn nodemanager as root
    ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting launch.

    解决2:
    是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本
    $ vim sbin/start-yarn.sh
    $ vim sbin/stop-yarn.sh

    在顶部空白处添加内容:

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    保存后我们来重新启动

    会提示一个警告说是HADOOP_SECURE_DN_USER替换了HDFS_SECURE_DN_USER,于是我将上面的参数名改成了这个,没有继续警告了。

    我这里也没有那么顺利,会报各种权限和验证问题,是因为我个人操作问题,正常情况下不会有的.但启动没有报错并不证明启动成功,我启动的时候就没有报任何错误,但访问hdfs系统仍然不行,这时我们需要确定hadoop的各种进程是否成功启动

    执行jps命令可以看到以下进程:

    12704 NameNode
    13013 SecondaryNameNode
    13401 NodeManager
    12812 DataNode
    13293 ResourceManager
    13710 Jps

    进程不能少,否则证明个别服务启动失败,我当时namenode就没有,重新进行了格式化,然后再启动就成功了

    下面也是我遇到的一个警告,但不影响使用

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

    解决方案

    第二个办法直接在log4j日志中去除告警信息。在/home/xxx/app/hadoop-3.0.0/etc/hadoop/log4j.properties文件中添加

    log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR 

    下面我们来试一试上传文件吧

    执行命令hadoop fs -put /home/xxx/software/jdk-9.0.4_linux-x64_bin.tar.gz hdfs://centos-1:9000/

    稍等一会,就上传完毕了,我们在看一下hdfs系统目录执行:hadoop fs -ls hdfs://centos-1:9000/

    Found 1 items
    -rw-r--r--   1 xxx supergroup  354635831 2018-02-03 21:37 hdfs://centos-1:9000/jdk-9.0.4_linux-x64_bin.tar.gz
    就此hadoop的环境搭建及测试通过,可以睡觉去了

  • 相关阅读:
    my first android test
    VVVVVVVVVV
    my first android test
    my first android test
    my first android test
    ini文件
    ZZZZ
    Standard Exception Classes in Python 1.5
    Python Module of the Week Python Module of the Week
    my first android test
  • 原文地址:https://www.cnblogs.com/ljs0322/p/8410570.html
Copyright © 2011-2022 走看看