Hadoop 部署使用

Hadoop 使用笔记

1、单机部署

环境准备

  • centos 7,作为系统环境

  • hadoop 版本使用hadoop-2.8.2

  • 在安装 Hadoop 前还需要做一些必备工作

1、 创建hadoop用户

#这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。
sudo useradd -m hadoop -s /bin/bash

#使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码
sudo passwd hadoop

#hadoop 用户增加sudo权限
vim /etc/sudoers 

## 找到 Allow root to run any commands anywhere 
root    ALL=(ALL)   ALL
hadoop  ALL=(ALL)   ALL  #增加此条记录

2、java 环境安装
yum 安装

yum  -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

配置JAVA_HOME

[hadoop@aliyun-gitlab lib]$ which java
/usr/bin/java
[hadoop@aliyun-gitlab lib]$ ls -lrt /usr/bin/java
lrwxrwxrwx 1 root root 22 Nov  8 16:12 /usr/bin/java -> /etc/alternatives/java
[hadoop@aliyun-gitlab lib]$ ls -lrt /etc/alternatives/java
lrwxrwxrwx 1 root root 73 Nov  8 16:12 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java
#通过上面命令查询到openjdk的安装路径后,编辑~/.bash_profile文件中配置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64 
export JRE_HOME=$JAVA_HOME/jre  
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 

#文件编辑完成后,执行该命令,使变量设置生效
source ~/.bash_profile

# 检验变量值
echo $JAVA_HOME     
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

安装 Hadoop 2

Hadoop 2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

  • 下载hadoop
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.8.2.tar.gz

#解压
tar -zxf hadoop-2.8.2.tar.gz
mv hadoop-2.8.2 hadoop 
  • Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd hadoop
./bin/hadoop version

#成功后的输出
[hadoop@aliyun-gitlab hadoop]$ ./bin/hadoop version
Hadoop 2.8.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 66c47f2a01ad9637879e95f80c41f798373828fb
Compiled by jdu on 2017-10-19T20:39Z
Compiled with protoc 2.5.0
From source with checksum dce55e5afe30c210816b39b631a53b1d
This command was run using /home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.8.2.jar

简单使用

Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

  • 在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 wing[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
cd /home/hadoop/hadoop
mkdir input
#往input 文件写入测试文件(此处只简单举例,所以文件较为简单)
[hadoop@aliyun-gitlab input]$ cat input/test.txt 
pfc
hgg
skkj
pfcaaa
pfchgy
pfchgy
wingaaa
wingpfc
winghaha

#运行计算
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'wing[a-z.]+'

#查看运行结果
[hadoop@aliyun-gitlab hadoop]$ cat output/*
1   wingpfc
1   winghaha
1   wingaaa

#注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

2、分布式集群搭建

准备

三台服务器配置,系统:centos7.2
三台服务器分配的IP地址:192.168.0.71/72/73
规划:71用作主节点用作hadoop-master,其它三台为数据节点72、73用作hadoop-salve1~2
jdk和生成保持一致使用1.8版本
hadoop-2.8.2版本,下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.8.2.tar.gz

host配置和主机名

修改三台服务器的hosts文件

sudo vim /etc/hosts
#添加以下三条记录
192.168.0.71 hadoop-master 
192.168.0.72 hadoop-slave1 
192.168.0.73 hadoop-slave2

检查防火墙配置,可先关掉。

查看防火墙状态

systemctl status iptables 
#使用firewalld的则使用
systemctl status firewalld

关闭防火墙

systemctl stop iptables 
#使用firewalld的则使用
systemctl stop firewalld

检查安全组端口是否开启

免密登陆配置

  • 下面以配置hadoop-master本机无密码登录为例进行讲解,用户需参照下面步骤完成h-salve1~2两台子节点机器的本机无密码登录;
    1)生产秘钥
ssh-keygen -t rsa -C 'hadoop-master' 

2)将公钥追加到”authorized_keys”文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3)验证本机能无密码访问

#ssh 不是默认22端口的需自行修改,如 ssh -p 12345 hadoop-master
ssh hadoop-master

最后,依次配置h-salve1~2无密码访问

  • hadoop-master本机无密码登录hadoop-slave1、hadoop-slave2无密码登录

  • 配置hadoop-slave1~hadoop-slave2本机无密码登录hadoop-master
    PS: 就是配置好各机器的互信关系而已,步骤基本差不多

配置hadoop-master的hadoop环境

1、hadoop-master上 解压缩安装包及创建基本目录

安装 Hadoop 2小节,把hadoop mv 到 /usr/local/hadoop下

2、 配置hadoop-master的hadoop环境变量

#配置环境变量,修改配置文件 vim ~/.bash_profile

export HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HADOOP_HOME/bin

使得hadoop命令在当前终端立即生效

source ~/.bash_profile

3、下面配置,文件都在:/usr/local/hadoop/etc/hadoop路径下
3.1、配置core-site.xml
修改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.2、配置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>3</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>

3.3、配置mapred-site.xml
拷贝mapred-site.xml.template为mapred-site.xml,在进行修改

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://hadoop-master:9001</value>
  </property>
</configuration>

3.4、配置yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-master</value>
    </property>
</configuration>

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

vim /usr/local/hadoop/etc/hadoop/masters
## 内容
hadoop-master

3.6、配置slaves文件(Master主机特有)
修改/usr/local/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。

vim /usr/local/hadoop/etc/hadoop/slaves
## 内容
hadoop-slave1
hadoop-slave2

配置hadoop-slave的hadoop环境

下面以配置hadoop-slave1的hadoop为例进行演示,用户需参照以下步骤完成其他hadoop-slave2服务器的配置。
1、从hadoop-master复制hadoop目录的文件到hadoop-slave1节点

#此处的ssh端口若不是默认22,则需自行修改
scp -r /usr/local/hadoop hadoop-slave1:/usr/local/

登录hadoop-slave1服务器,删除slaves内容

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

2、配置环境变量,此步骤跟hadoop-master一样

启动集群

1、格式化HDFS文件系统
进入master的~/hadoop目录,执行以下操作

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

2、然后启动hadoop:

sbin/start-all.sh

成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
3、使用jps命令查看运行情况

#master 执行 jps查看运行情况
[hadoop@aliyun-gitlab hadoop]$ jps
9922 Jps
27658 NameNode
27933 SecondaryNameNode
28110 ResourceManager
#slave 执行 jps查看运行情况
[hadoop@wing-ecs hadoop]$ jps
12647 NodeManager
12540 DataNode
13150 Jps

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

[hadoop@aliyun-gitlab hadoop]$ hadoop dfsadmin -report
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

Configured Capacity: 147692552192 (137.55 GB)
Present Capacity: 91987980288 (85.67 GB)
DFS Remaining: 91987890176 (85.67 GB)
DFS Used: 90112 (88 KB)
DFS Used%: 0.00%
Under replicated blocks: 1
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0

-------------------------------------------------
Live datanodes (2):

Name: 120.25.85.120:50010 (hadoop-slave2)
Hostname: iZ94v1rbhw4Z
Decommission Status : Normal
Configured Capacity: 105553100800 (98.30 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 45131362304 (42.03 GB)
DFS Remaining: 55036317696 (51.26 GB)
DFS Used%: 0.00%
DFS Remaining%: 52.14%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Nov 14 14:29:49 CST 2017


Name: 120.78.143.38:50010 (hadoop-slave1)
Hostname: wing-ecs
Decommission Status : Normal
Configured Capacity: 42139451392 (39.25 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 3023679488 (2.82 GB)
DFS Remaining: 36951572480 (34.41 GB)
DFS Used%: 0.00%
DFS Remaining%: 87.69%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Nov 14 14:29:49 CST 2017

5、hadoop 重启

sbin/stop-all.sh
sbin/start-all.sh
    原文作者:PengFuChuan
    原文地址: https://www.jianshu.com/p/77eee842ddec
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞