环境准备
准备三台虚拟机
克隆三个虚拟机linux00、linux01、linux02均为NAT模式;
防火墙
#关闭防火墙服务
systemctl stop firewalld.service
#禁止防火墙开启启动
systemctl disable firewalld.service
#检查防火墙状态
firewall-cmd --state
主机名
vi /etc/hostname
hosts文件
vi /etc/hosts
#添加
192.168.126.134 linux00
192.168.126.135 linux01
192.168.126.136 linux02
免密登录
#三台机分别执行
ssh-keygen
ssh-copy-id linux00
ssh-copy-id linux01
ssh-copy-id linux02
#可直接进入
ssh linux01
时钟同步
#阿里云时钟同步
ntpdate ntp4.aliyun.com
#定时同步
crontab -e
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
安装java
#解压
tar -xvzf jdk-8u65-linux-x64.tar.gz -C /usr/java
#配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_51
export PATH=:$JAVA_HOME/bin:$PATH
#生效
source /etc/profile
#分发,
scp -r /usr/java/jdk1.8.0_51/ linux01:/usr/java/
scp -r /usr/java/jdk1.8.0_51/ linux02:/usr/java/
scp /etc/profile linux01:/etc/
scp /etc/profile linux02:/etc/
source /etc/profile
部署规划
服务 | linux00 | linux01 | linux02 |
---|---|---|---|
NameNode | |||
HDFS | SecondaryNameNode | DataNode | DataNode |
DataNode | |||
YARN | ResourceManage | NodeManager | NodeManager |
NodeManager |
部署步骤
解压安装包
cd /home
tar -zxf hadoop-3.2.4.tar.gz -C /home
环境变量
sudo vi /etc/profile
export HADOOP_HOME=/home/hadoop-3.2.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
#三个文件hadoop-env.sh mapred-env.sh yarn-env.sh添加JAVA_HOME环境变量
hadoop-env.sh mapred-env.sh yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_51
配置文件
- core-site.xml
<configuration>
//HDFS默认访问路径
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux00:8020</value>
</property>
//数据文件存放目录,默认/tmp目录
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-3.2.4/tmp</value>
</property>
</configuration>
- hdfs-site.xml
<configuration>
//数据块副本数量,默认为3
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property><!--不检查用户权限-->
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
//nameNode节点数据存放目录
<property>
<name>dfs.namenode.name.ditr</name>
<value>file:/opt/hadoop-3.2.4/tmp/dfs/name</value>
</property>
//dataNode节点数据存放目录
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-3.2.4/tmp/dfs/data</value>
</property>
</configuration>
- mapred-site.xml
<configuration>
<!--指定MapReduce任务执行框架为YARN-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--为MapReduce应用程序主进程添加环境变量-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop-3.2.4</value>
</property>
<!--为MapReduce Map任务添加环境变量-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop-3.2.4</value>
</property>
<!--为MapReduce Reduce任务添加环境变量-->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop-3.2.4</value>
</property>
- yarn-site.xml
<! -- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序。YARN提供了该配置项用于在NodeManager上扩展自定义服务,MapReduce的Shuffle功能正是一种扩展服务。-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--ResourceManager所在的主机名。客户端提交应用程序、ApplicationMaster申请资源、
NodeManager汇报心跳和领取任务等,都需要知道ResourceManager的位置,以便进行通信-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux00</value>
</property>
</configuration>
- 修改workers文件
linux00
linux01
linux02
安装文件分发
scp -r hadoop-3.2.4/ linux01:/home
scp -r hadoop-3.2.4/ linux02:/home
格式化NameNode
hdfs namenode -format
启动命令
start-all.sh
参考文档https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
hadoop命令
参考文档
https://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html
# 显示根目录 / 下的文件和子目录,绝对路径
hadoop fs -ls /
# 新建文件夹,绝对路径
hadoop fs -mkdir /hello
# 上传文件
hadoop fs -put hello.txt /hello/
# 下载文件
hadoop fs -get /hello/hello.txt
# 输出文件内容
hadoop fs -cat /hello/hello.txt
运行jar包中的程序
hadoop jar word.jar com.hadoop.mr.WordCountDriver /word/input /out
Hadoop WEB 端口
Daemon | Web Interface | Notes |
---|---|---|
NameNode | http://nn_host:port/ | Default HTTP port is 9870. |
ResourceManager | http://rm_host:port/ | Default HTTP port is 8088. |
MapReduce JobHistory Server | http://jhs_host:port/ | Default HTTP port is 19888. |