[NOTE] 安装hadoop相关注意事项

  • linux在启动过程中通过读取/etc/profile文件中内容完成相关环境的载入,而ssh登陆远程主机的时候并不会加载/etc/profile中的配置文件。

    因此jdk安装完成后需要两次配置,一为配置/etc/profile中的环境变量,二将hadoop启动脚本中调用的HADOOP_HOME改为绝对路径的形式。

一、操作系统环境

  • 依赖软件ssh、jdk
    • jdk安装: rpm -i jdk-xxxx.rpm通过rpm安装jdk,会发现一个有趣的现象,使用whereis java时,系统会给出java安装在/usr/bin/java,但事实上,/usr/bin/java引出了一个指向/usr/java的软链接,而在/usr/java中,存在两个软链接,default指向latestlatest指向jdk1.x.x_xxx-xxx,且,通过rpm安装的java环境是不全的,java/bin目录下只有少数指令我们可以直接调取,而如jps一般的指令并未添加到系统的环境变量中;
    • 解决:sudo vi /etc/profile文末添加export JAVA_HOME=/usr/java/jdk1.x.x_xxx-xxx,并在系统路径中增加PATH = $PATH:$JAVA_HOME/bin
    • source /etc/profile
  • 环境配置
    • java_home(/etc/profile)
    • 免密
  • 时间同步
  • hosts、hostname

二、hadoop部署

  • /opt/hadoop/ (/opt目录专门用于放第三方源的软件,注意/与/usr/local的区别)

    • /etc/profile文件中加入export HADOOP_HOME=/opt/hadoopPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 启动脚本修改

    • $HADOOP_HOME/etc/hadoop/hadoop-env.sh
    • $HADOOP_HOME/etc/hadoop/mapred-env.sh
    • $HADOOP_HOME/etc/hadoop/yarn-env.sh
  • 配置文件修改

    配置文件形式如下,property中包含name:value对,之后的内容中将只会说明需要配置的name:value

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
  • etc/hadoop/core-site.xml

    Parameter Value Notes
    fs.defaultFS NameNode URI hdfs://host:port/
    io.file.buffer.size 131072 Size of read/write buffer used in SequenceFiles.
    hadoop.tmp.dir /tmp/hadoop-${user.name} Linux内核在必要时会删除/tmp目录下文件,同时hdfs-site.xml中的dfs.namenode.name.dirdfs.datanode.data.dir也使用了$hadoop.tmp.dir的参数,这会造成数据的丢失,因此必须修改。改为/var/hadoop/local

  • etc/hadoop/hdfs-site.xml

    • configurations for NameNode:
    Parameter Value Notes
    dfs.namenode.name.dir NN对命名空间及日志文件进行持久化的地址。 If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
    dfs.hosts / dfs.hosts.exclude List of permitted/excluded DataNodes. If necessary, use these files to control the list of allowable datanodes.
    dfs.blocksize 268435456 HDFS blocksize of 256MB for large file-systems.
    dfs.namenode.handler.count 100 More NameNode server threads to handle RPCs from large number of DataNodes.
    • configurations for SNN:
| Parameter                            | Value         | Notes                                                 |
| ------------------------------------ | ------------- | ----------------------------------------------------- |
| dfs.namedoe.secondary.http-address   | 0.0.0.0:50090 | The secondary namenode http server address and port.  |
| dfs.namenode.secondary.https-address | 0.0.0.0:50091 | The secondary namenode HTTPS server address and port. |



+ configurations for DN:



| Parameter               | Value                                                        | Notes                                                        |
| ----------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `dfs.datanode.data.dir` | Comma separated list of paths on the local filesystem of a `DataNode` where it should store its blocks. | If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. |
|                         |                                                              |                                                              |

  • etc/hadoop/yarn-site.xml`
  • etc/hadoop/mapred-site.xml
  • 角色在哪里启动?

  • 启动

    • hdfs namenode -format此处遇到一个问题,hdfs格式化失败,猜测是还未修改hadoop用户权限,暂且先用root用户,修改用户权限看这一篇
    • start-dfs.sh
    • 此处遇到一个问题,外网无法通过master:50070访问hadoop的管理页面,猜测是防火墙没关,关闭防火墙看这一篇

3.集群

NN SNN DN
master *
slave1 * *
slave2 *
slave3 *

修改hadoop.tmp.dir=/var/hadoop/cluster

并修改core-site.xml slaves hdfs-site.xml中相应的配置

scp -r /opt/hadoop/ hadoop@slave1:/opt/

若碰到scp permission denied 的情况,可使用chmod 777 /opt/hadoop对使用权限进行修改

1
2