hadoop -- 安装配置


太想伸手摘取星星的人,常常忘记脚下的鲜花


环境说明

  • Ubuntu 16.04
  • hadoop 2.9.1
  • jdk 1.8

安装 java

  1. 官网本地下载jdk安装包,解压到opt/中,改名为java
$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

$ cp jdk-8u181-linux-x64.tar.gz /opt
$ tar -zxvf jdk-8u181-linux-x64.tar.gz
$ sudo mv jdk1.8.0_181/ java
  1. 增加环境变量
$ vim ~/.bashrc

# java home
export JAVA_HOME=/opt/java
export JRE_HOME=/opt/java/jre
export CLASSPATH=.:/opt/java/lib:/opt/java/jre/lib
export PATH=/opt/java/bin:$PATH

注:有些奇怪的是,启动hadoop的时候读取不了这个 JAVA_HOME,需要在 hadoop-env.sh 中配置绝对路径才行,这个下面再记录

  1. 测试
$ java
$ javac


安装 hadoop

  1. 下载 hadoop
$ wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz
  1. 一样解压到/opt中改名为hadoop
$ cp hadoop-2.9.1.tar.gz /opt
$ tar -zxvf hadoop-2.9.1.tar.gz
$ sudo mv hadoop-2.9.1/ hadoop
  1. 配置环境变量
$ vim ~/.bashrc

# hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:/opt/hadoop/bin
export PATH=$PATH:/opt/hadoop/sbin
export HADOOP_MAPRED_HOME=/opt/hadoop
export HADOOP_COMMON_HOME=/opt/hadoop
export HADOOP_HDFS_HOME=/opt/hadoop
export YARN_HOME=/opt/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=/opt/hadoop/lib/native
export HADOOP_OPTS="-Djava.library.path=/opt/hadoop/lib"
  1. 顺带修复启动时的一个warning
Unable to load native-hadoop library for your platform” 
$ vim /opt/hadoop/etc/hadoop/hadoop-env.sh

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/opt/hadoop/lib/native"

export HADOOP_COMMON_LIB_NATIVE_DIR="/opt/hadoop/lib/native/"

ssh 免密登录

ubuntu 只是默认安装了 openssh-client,但是没有安装openssh-server

$ sudo apt-get install -y openssh-server

生成公约和密钥,直接回车,不设置密码

$ ssh-keygen  -t rsa

执行完之后默认会在用户的根目录下(/home/username)生成 .ssh 文件夹,公钥和秘钥就在其中

把公用密匙添加到authorized_keys 文件

$ cd /home/pinsily/.ssh
$ cat id_rsa.pub >> authorized_keys

最重要的一步就是设置权限了,没有权限的话登录仍旧需要输入该用户的密码

$ chmod 600 id_rsa
$ chmod 755 /home/pinsily/.ssh

设置完这些就可以登录了

$ ssh pinsily@localhost


伪分布环境搭建

  1. 配置文件

    hadoop 的配置文件位于 /opt/hadoop/etc/hadoop

$ vim core-site.xml

<configuration>

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>

  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/hadoop/tmp</value>
  </property>

</configuration>
$ vim hdfs-site.xml

<configuration>

  <!-- 没有这一个的话namenode会启动不了,官网没有这个  -->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/hadoop/tmp/dfs/name</value>
  </property>

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/hadoop/tmp/dfs/data</value>
  </property>



</configuration>
$ cp mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml


<configuration>

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>



</configuration>
$ vim yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost</value>
  </property>

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>



</configuration>
  1. 格式化 namenode
$ hadoop namenode -format
  1. 启动
$ start-all.sh

注:如果提示找不到 java 的话, 将 java 的绝对路径修改添加到 hadoop-env.sh 中

  1. 检查启动情况
$ jps

enter description here

  1. 不适用的时候可以关掉
$ stop-all.sh

总结

断断续续摸索了很多次这样的环境配置,没有刚入门时的到处坑,配置文件的完整度,算是好过了官网了吧,汗颜~~