安装前的前置服务

安装过程

  1. 选一台机器当作 Master 进行配置。 下载稳定版的 hadoop. 下载

    这里选用稳定版 2.8.5 的 binary 包版本。这是为了和后续的 HBase 配合兼容,并且可以直接在linux上直接使用(动态库都加载正常的情况下)。

    如果在mac os ,需要启动 native 静态库,也可以使用源码进行编译,可以参考下文源码编译。 注意,官网提供的bin包中的native 是 32位linux 版本,如果是64位仍需要手动编译。

  2. 解压到 /opt/hadoop-manager 中,并建立软链接 /opt/hadoop 指向该路径. 这里是为了方便版本切换。

  3. 配置好环境变量。(注意该环境变量需要在ssh 登录指定用户后生效)

    # file: ~/.hadooprc
    export HADOOP_HOME=/opt/hadoop
    export HADOOP_DATA_DIR=/opt/hdfs
    export HADOOP_INCLUDE_DIR=$HADOOP_HOME/include
    export HADOOP_LOG_DIR=/opt/logs/hadoop
    export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
    export HADOOP_COMMON_LIB_NATIVE_DIR="$HADOOP_HOME/lib/native"
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    
  4. 检查静态库 $HADOOP_HOME/lib/native 下的so 能够正常找到路径,如果找不到则需要配置好相应的so 路径到 /etc/ld.so.conf 下。如果前面的 jdk是手动安装的话,配置好 jre 的so路径。路径如下为 $JAVA_HOME/jre/lib/amd64 和 $JAVA_HOME/jre/lib/amd64/server

  5. 配置 DataNode 的节点 ip

    # file: $HADOOP_HOME/etc/hadoop/slaves
    hadoop@<你的节点ip>
    
  6. 配置以下文件。(没有则可以按 template 自行创建).

    <aside> 💡 这里是以伪代码的形式给出. 实际配置的时候还需要 xml 的格式进行配置

    </aside>

    ### *~/etc/hadoop/core-site.xml*
    fs.defaultFS=hdfs://Master:9820 # 主节点的hdfs地址
    hadoop.tmp.dir=<file:/> # hadoop的缓存内容地址, 防止因为系统清理而刷新掉
    ha.zookeeper.quorum=master:2181,slave:2181 # 指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点
    
    ### *~/etc/hadoop/hdfs-site.xml*
    dfs.replication=3 # 数据副本备份片数
    dfs.namenode.name.dir=<file:/opt/hdfs/name> # name node 在本地机器上的存储路径
    dfs.datanode.data.dir=<file:/opt/hdfs/data> # data node 在本地机器上的存储路径
    dfs.webhdfs.enabled=true # 支持 web hdfs 的端口
    
    ### *~/etc/hadoop/mapred-site.xml*
    mapreduce.framework.name=yarn # 指定资源调度框架的名字
    mapreduce.jobhistory.done-dir=<hdfs://> # 指定hdfs 上存放已经执行完成的作业日志
    mapreduce.jobhistory.intermediate-done-dir=<hdfs://> # 指定hdfs 上存放正在执行的作业日志
    mapreduce.map.memory.mb=2048 # container map 最大内存
    mapreduce.reduce.memory.mb=1024 # container reduce 最大内存
    mapreduce.map.java.opts=-Xmx1024m # container map 任务 中 java进程 所能使用的最大内存大小
    mapreduce.reduce.java.opts=-Xmx512m # container reduce 中 java进程 所能使用的最大内存大小
    
    ### *~/etc/hadoop/yarn-site.xml*
    yarn.resourcemanager.hostname= # 指定非高可用情况下的 rm 的hostname
    yarn.nodemanager.aux-services=mapreduce_shuffle # NodeManager上运行的附属服务,默认是mapreduce_shuffle
    yarn.nodemanager.resource.memory-mb= # 每个yarn nodemanager 节点上最大可用的物理内存
    yarn.scheduler.maximum-allocation-mb= # yarn 给每个 nodemanager 节点上分配 单个container 所能占到的最大物理内存
    yarn.nodemanager.vmem-pmem-ratio=5 # yarn nodemanager 管理单个 container的最大虚拟内存 比率 ( container 的最大虚拟内存 = container 物理内存 * 该比率. 默认值 2.1 )
    yarn.nodemanager.vmem-check-enabled=true # 检查 container 占据的 虚拟内存, 超过预设值则kill
    yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler # 指定调度程序, 使用公平的调度程序
    yarn.log-aggregation-enable=true # 启动日志
    yarn.log.server.url=http://master:19888/jobhistory/logs # jobhistory 访问路径
    yarn.resourcemanager.ha.enabled=true # 是否启用 yarn 高可用
    yarn.nodemanager.resource.cpu-vcores=2 # 每个 nodemanager 节点可分配的cpu 核数
    
  7. 配置完成之后。注意存放数据的 HDFS 路径要先创建好。 执行以下命令,重置 namenode 节点. hdfs namenode -format

  8. 执行 $HADOOP_HOME/sbin/start-dfs.sh 启动 hdfs。 如果遇到错误可以使用以下命令开启日志。

    export HADOOP_ROOT_LOGGER=DEBUG,console

  9. 使用命令 jps 查看节点是否启动成功

  10. 打开 namenode 管理界面

  11. 执行 $HADOOP_HOEM/sbin/start-yarn.sh 启动yarn 。可以通过 web 来查看,也可以通过在 namenode 节点上执行 yarn node -list 来查看 active 的 NodeManager