目录

  • 一、Hadoop概念
  • 二、Hadoop的安装
  • 2.1 安装
  • 2.2配置环境变量
  • 2.3测试单机hadoop
  • 三、Hadoop集群配置
  • 3.1配置hadoop-env.sh
  • 3.2配置core-site.xml
  • 3.3配置yarn-site.xml
  • 3.4 编辑slaves和master
  • 3.5配置hdfs-site.xml
  • 3.6配置mapred-ste.xml
  • 3.7分发给从机
  • 3.8主机namenode格式化
  • 3.9 hadoop启动
  • 四、网页
  • 五、集群运行wordcount(简单应用)


一、Hadoop概念

hadoop vm网络配置 hadoop机器配置_xml

hadoop vm网络配置 hadoop机器配置_mapreduce_02


Block一般128MB一个;

元数据:一个表,对应着数据所在的路径。

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_03

master重启的方式

hadoop vm网络配置 hadoop机器配置_hadoop_04

二、Hadoop的安装

2.1 安装

mkdir /usr/hadoop  #创建/usr/hadoop

上传hadoop-2.7.3.tar.gz/opt/soft

tar  -zxvf hadoop-2.7.3.tar.gz  -C  /usr/hadoop # 解压/opt/soft/hadoop-2.7.3.tar.gz到 指定目录

2.2配置环境变量

nano /etc/profile,添加下面4行

# hadoop setting
export   HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export  CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export  PATH=$PATH:$HADOOP_HOME/bin

hadoop vm网络配置 hadoop机器配置_hdfs_05

保存退出之后,使环境变量生效 source /etc/profile

在安装好Hadoop和配置完环境变量之后,Hadoop已经可以做一些事情了。

2.3测试单机hadoop

创建一个文件夹,我这里创建在hadoop文件夹下

/usr/hadoop
mkdir mytestin
cd mytestin
nano data1.txt
nano data2.txt

data1.txt和data2.txt你可以输入一些字符(随便打几个英文单词)。

然后我们到hadoop-2.7.3目录下

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount /usr/hadoop/mytestin /usr/hadoop/mytestout

hadoop是命令,jar是程序类型,后面是路径+jar 然后是输入目录,输出目录。jar =java包。

注意:每次运行此命令要求输出目录是一个全新目录(不存在的目录)。

我们一般使用Java输入和输出都在终端完成,但是hadoop的输入和输出的数据量十分巨大,所以我们要用输入和输出目录来存放。

hadoop fs 命令查看程序结果:

hadoop fs -text /usr/hadoop/mytestout/part-r-00000 # 或者使用cat

hadoop vm网络配置 hadoop机器配置_hadoop_06

三、Hadoop集群配置

在上面我们讲了单机版的hadoop,现在我们来配置集群

3.1配置hadoop-env.sh

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop

hadoop vm网络配置 hadoop机器配置_xml_07

编辑hadoop-env.shnano hadoop-env.sh,注释原来的,修改如下。

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171

hadoop vm网络配置 hadoop机器配置_hdfs_08

3.2配置core-site.xml

nano core-site.xml,在<configuration></configuration> 之间配置

<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value> #改名
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
</property>

<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>

<property>
<name>fs.checkpoint.period</name>  # 检查间隔60s
<value>60</value>
</property>

<property>
<name>fs.checkpoint.size</name> # 检查点大小
<value>67108864</value>
</property>

hadoop vm网络配置 hadoop机器配置_mapreduce_09

3.3配置yarn-site.xml

nano yarn-site.xml,如果你的主机名不是master你就需要改名。

<property>    
<name>yarn.resourcemanager.hostname</name>
<value>master</value> # 改名
</property>

<property>    
<name>yarn.resourcemanager.address</name>
<value>master:18040</value> # 改名
</property>

<property> 
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value> # 改名
</property>

<property> 
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value> # 改名
</property>

<property>
<name>yarn.resourcemanager-tracker.address</name>
<value>master:18025</value> # 改名
</property>

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value> # 改名
</property>

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

<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_10

3.4 编辑slaves和master

nano slaves,有几个写几个。

slave1
slave2

nano master

master

3.5配置hdfs-site.xml

nano hdfs-site.xml

<property>
<name>dfs.replication</name>    
<value>2</value>#Block副本数,默认3
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value> # 注意端口号不会重复使用。
</property>

<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

hadoop vm网络配置 hadoop机器配置_hdfs_11

3.6配置mapred-ste.xml

复制模板

cp mapred-site.xml.template mapred-site.xml

编辑文件,nano mapred-site.xml

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

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_12

3.7分发给从机

scp -r /usr/hadoop root@slave1:/usr
scp -r /usr/hadoop root@slave2:/usr

配置从机的环境变量,

nano /etc/profile,添加下面4行

# hadoop setting
export   HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export  CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export  PATH=$PATH:$HADOOP_HOME/bin

保存退出之后,使环境变量生效 source /etc/profile

3.8主机namenode格式化

cd /usr/hadoop/hadoop-2.7.3/
hadoop namenode -format

执行命令后如下

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_13

3.9 hadoop启动

hadoop不用每台机器都启动,我们再mstaer上调用脚本来启动

[root@master hadoop-2.7.3]# sbin/start-all.sh

hadoop vm网络配置 hadoop机器配置_mapreduce_14

然后查看进程

[root@master hadoop-2.7.3]# jps

jps是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程。

主机:

hadoop vm网络配置 hadoop机器配置_hadoop_15

从机,直接输入jps,不用启动hadoop

hadoop vm网络配置 hadoop机器配置_hadoop_16


hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_17

四、网页

关闭master防火墙,systemctl stop firewalld

打开浏览器输入:192.168.222.171:9001

hadoop vm网络配置 hadoop机器配置_hdfs_18

打开浏览器输入:192.168.222.171:50070,文件系统概述

hadoop vm网络配置 hadoop机器配置_hdfs_19

五、集群运行wordcount(简单应用)

fs方式创建文件夹:hadoop fs -mkdir /myin

hadoop vm网络配置 hadoop机器配置_xml_20

把本地txt文件上传到集群中:

hadoop fs -put /usr/hadoop/mytestin/data1.txt  /myin     
hadoop fs -put /usr/hadoop/mytestin/data2.txt  /myin

查看input目录结构:

hadoop fs -ls /myin

hadoop vm网络配置 hadoop机器配置_mapreduce_21

运行wordcount:

hadoop jar /usr/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount  /myin /myout

hadoop vm网络配置 hadoop机器配置_hdfs_22

查看结果:

hadoop vm网络配置 hadoop机器配置_mapreduce_23

查看程序结果:

hadoop fs -cat /myout/part-r-00000

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_24

hadoop fs -get /myout/part-r-00000 /home #通过get命令,把文件下载到本地

hadoop vm网络配置 hadoop机器配置_hadoop vm网络配置_25