Hadoop 2.9.1 on Ubuntu 16.04

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop 2.9.1 on Ubuntu 16.04相关的知识,希望对你有一定的参考价值。

Hadoop 2.9.1 on Ubuntu 16.04

环境配置

3台机器虚拟机 ubuntu16.04

10.64.104.177  hadoop-master
10.64.104.178  hadoop-node1
10.64.104.179  hadoop-node2

1、安装jdk

# 三台机器均要安装
sudo apt-get update
sudo apt-get install default-jdk

java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

# 添加JAVA_HOME
cat << EOF >> ~/.bashrc
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
EOF
source ~/.bashrc

2、创建账户

sudo useradd -m hadoop -s /bin/bash //添加用户
sudo passwd hadoop  //创建密码
sudo  adduser hadoop sudo   //sudo 授权

3、主机名 及 hosts配置

# 设置3台机器的主机名
hostnamectl  set-hostname  hadoop-master
hostnamectl  set-hostname  hadoop-node1
hostnamectl  set-hostname  hadoop-node2

# 添加 host
cat << EOF >> /etc/hosts
10.64.104.177  hadoop-master
10.64.104.178  hadoop-node1   
10.64.104.179  hadoop-node2   
EOF

4、SSH免密

# 在hadoop-master 
sudo apt-get install openssh-server
ssh-keygen -t rsa 回车 回车 回车
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

scp /home/hadoop/.ssh/id_rsa.pub  [email protected]:.ssh/
scp /home/hadoop/.ssh/id_rsa.pub  [email protected]:.ssh/

# 在hadoop-node1,hadoop-node2 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

安装Hadoop

配置hadoop-master的hadoop环境


1、下载(当前最新的stable 版本为2.9.1)
Hadoop 的安装包从这里可以下载: http://mirror.bit.edu.cn/apache/hadoop/common/
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz
2、解压
sudo tar xvf hadoop-2.9.1.tar.gz -C /usr/local
sudo mv /usr/local/hadoop-2.9.1 /usr/local/hadoop
sudo chown -R hadoop.hadoop /usr/local/hadoop/ 
3、hadoop环境变量配置
cat <<EOF>> ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
EOF

# 立即生效
source ~/.bashrc

4、配置hadoop 配置文件

# 修改如下篇日志文件,三台机都要进行这些操作
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
$HADOOP_HOME/etc/hadoop/core-site.xml
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
$HADOOP_HOME/etc/hadoop/mapred-site.xml
$HADOOP_HOME/etc/hadoop/slaves

1) 修改JAVA_HOME
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh 
## 配置项
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64

2)修改Hadoop核心配置文件/usr/local/hadoop/etc/hadoop/core-site.xml,通过fs.default.name指定NameNode的IP地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
</configuration>

特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。

3)配置hdfs-site.xml
修改HDFS核心配置文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

4)配置masters 文件
修改/usr/local/hadoop/etc/hadoop/masters文件,该文件指定namenode节点所在的服务器机器。删除localhost,添加namenode节点的主机名hadoop-master;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。
cat << EOF >> /usr/local/hadoop/etc/hadoop/masters
hadoop-master
EOF

5)配置slaves文件(Master主机特有)
该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名
cat << EOF >> /usr/local/hadoop/etc/hadoop/slaves
hadoop-node1
hadoop-node2
EOF 

配置hadoop-node的hadoop环境

下面以配置hadoop-node1的hadoop为例进行演示,用户需参照以下步骤完成其他hadoop-node2~3服务器的配置。
1)复制hadoop 到 hadoop-node1 节点
sudo mkdir -p /usr/local/hadoop
rsync -avz /usr/local/hadoop hadoop-node1:/usr/local/hadoop

2) 添加hadoop环境
cat <<EOF>> ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
EOF
source ~/.bashrc

3) 登录hadoop-node1服务器,删除slaves内容

rm -rf /usr/local/hadoop/etc/hadoop/slaves

其它节点配置如上

启动 Hadoop

启动集群
1、格式化HDFS文件系统

进入master的~/hadoop目录,执行以下操作

bin/hadoop namenode -format
格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

2、然后启动hadoop:

sbin/start-all.sh
3、使用jps命令查看运行情况
jps
#master 执行 jps查看运行情况
[email protected]:/usr/local/hadoop$ jps 
27893 SecondaryNameNode
28070 ResourceManager
27657 NameNode
30635 Jps
26078 ResourceManager
#slave 执行 jps查看运行情况
[email protected]:~$ jps 
26832 DataNode
27956 NodeManager
28093 Jps

4、命令查看Hadoop集群的状态

通过简单的jps命令虽然可以查看HDFS文件管理系统、MapReduce服务是否启动成功,但是无法查看到Hadoop整个集群的运行状态。我们可以通过hadoop dfsadmin -report进行查看。用该命令可以快速定位出哪些节点挂掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

hadoop dfsadmin -report
输出结果:

Configured Capacity: 50108030976 (46.67 GB)
Present Capacity: 41877471232 (39.00 GB)
DFS Remaining: 41877385216 (39.00 GB)
DFS Used: 86016 (84 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
......

5、hadoop 重启

sbin/stop-all.sh
sbin/start-all.sh

6、查看hadoop状态
http://${hadoop-master}:50070
http://${hadoop-master}:8088

FAQ

Q1: hadoop-node2: Error: JAVA_HOME is not set and could not be found.

这个错误意思没有找到jdk的环境变量,需要在hadoop-env.sh配置。

vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh 
## 配置项
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64

以上是关于Hadoop 2.9.1 on Ubuntu 16.04的主要内容,如果未能解决你的问题,请参考以下文章

hadoop分布式集群搭建(2.9.1)

Step by step install and run Hadoop 2.9.1 on Windows 10 64 bit (最全步骤整理)

setup passphaseless ssh before installing hadoop on ubuntu

Install hadoop3.0 on multiple nodes

安装 hadoop 时在 ubuntu 16.04 中找不到 jps 命令

Ubuntu16下Hadoop安装