• 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的环境搭建及测试通过,可以睡觉去了

  • 相关阅读:
    网页转图片,html生成图片,网页生成图片(基于linnux+phantomjs)和wkhtmltoimage
    51Nod 1031 骨牌覆盖 | Fibonacci
    51Nod 1024 矩阵中不重复的元素 | 技巧 数学
    51Nod 1014 X^2 Mod P
    51Nod 1010 只包含因子2 3 5的数 | 预处理+二分
    51Nod 1007 正整数分组 | DP (01背包)
    51Nod 1381 硬币游戏 | 概率(数学期望)
    51Nod 1347 旋转字符串 | 规律
    51Nod 1344 走格子 | 贪心
    51Nod 1305 Pairwise Sum and Divide | 思维 数学
  • 原文地址:https://www.cnblogs.com/ljs0322/p/8410570.html
Copyright © 2020-2023  润新知