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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 文/胡晨川我是Linux外行,hadoop外行,java更外行,Scala听也没听过,在我脑海中,Spark一直只...
    老树之见阅读 5,829评论 3 39
  • 1 目的将hadoop 2.7.1 安装到 166、167、168 三台机器上2 提供环境练习环境192.168....
    灼灼2015阅读 3,385评论 4 40
  • 之前的有点忘记了,这里在云笔记拿出来再玩玩.看不懂的可以留言 大家可以尝试下Ambari来配置Hadoop的相关环...
    HT_Jonson阅读 2,942评论 0 50
  • 一年又一年,人渐到中年。 语言和心思被生活刻划的越发粗粝,平日里有些话即使想到了也羞于表达。倘若是在新旧交替之际说...
    龙莹洁阅读 260评论 0 0
  • 今天在昆瑜山爬山时遇到一个好玩的设施,一排只拴着两根绳子晃荡在空中的木头,人们抓着绳子踩着木头依次而过。 闺女看到...
    果茉莉阅读 289评论 3 0