# root用户下执行
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
vi /etc/hostname
vi /etc/hosts
192.168.254.128 node01
192.168.254.130 node02
192.168.254.132 node03
# 通过网络连接外网进行时钟同步,安装ntpdate
yum -y install ntpdate
# 阿里云时钟同步服务器
ntpdate ntp4.aliyun.com
# 设置定时任务
crontab -e
# 添加如下内容
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
# 确认是否安装ntpdate时钟同步工具
rpm -qa | grep ntpdate
# 安装ntp
yum -y install ntp
# 执行以下命令,设置时区为中国上海时区
timedatectl set-timezone Asia/Shanghai
# 启动node01的ntpd服务
systemctl start ntpd
# 设置ntpd服务开机启动
systemctl enable ntpd
# 修改node01这台服务器的时钟同步配置,允许对外提供服务
vim /etc/ntp.conf
# 同意192.168.254.0网段(修改成自己的网段)的所有机器与node01同步时间
restrict 192.168.254.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
# 注释掉以下这四行内容
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
# 修改完成之后,重启node01的ntpd服务
systemctl restart ntpd
# 至此,ntpd的服务端已经安装配置完成,接下来配置客户端与服务端进行同步
# 客户端node02与node03设置时区与node01保持一致Asia/Shanghai
# node02与node03修改配置文件,保证每次时间写入硬件时钟
vim /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes
# node02与node03修改定时任务,定时与node01同步时间
crontab -e
*/1 * * * * /usr/sbin/ntpdate node01
useradd hadoop
passwd hadoop
visudo
# 增加如下内容
hadoop ALL=(ALL) ALL
# 软件压缩包存放目录
mkdir -p /bigdata/soft
# 软件解压后存放目录
mkdir -p /bigdata/install
# 将文件夹权限更改为hadoop用户
chown -R hadoop:hadoop /bigdata
su hadoop
ssh-keygen -t rsa
# 按三次Enter键即可生成了
ssh-copy-id node01
# node01在hadoop用户下,执行以下命令,将authorized_keys拷贝到node02与node03服务器
cd /home/hadoop/.ssh/
scp authorized_keys node02:$PWD
scp authorized_keys node03:$PWD
ssh node02
sudo reboot -h now
服务器IP | node01 | node02 | Node03 |
---|---|---|---|
HDFS | NameNode | ||
HDFS | SecondaryNameNode | ||
HDFS | DataNode | DataNode | DataNode |
YARN | ResourceManager | ||
YARN | NodeManager | NodeManager | NodeManager |
历史日志服务器 | JobHistoryServer |
[hadoop@centos128 soft]$ pwd
/bigdata/soft
[hadoop@centos128 soft]$ wget http://archive.apache.org/dist/hadoop/core/hadoop-3.1.4/hadoop-3.1.4.tar.gz
[hadoop@centos128 soft]$ tar -zxvf hadoop-3.1.4.tar.gz -C /bigdata/install/
# 删掉没用的文档
[hadoop@centos128 share]$ rm -rf doc/
[hadoop@centos128 soft]$ cd /bigdata/install/hadoop-3.1.4/
[hadoop@centos128 hadoop-3.1.4]$ bin/hadoop checknative
sudo yum -y install openssl-devel
[hadoop@centos128 hadoop]$ pwd
/bigdata/install/hadoop-3.1.4/etc/hadoop
[hadoop@centos128 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/usr/apps/jdk1.8.0_241
[hadoop@centos128 hadoop]$ vim core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://node01:8020value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/bigdata/install/hadoop-3.1.4/hadoopDatas/tempDatasvalue>
property>
<property>
<name>io.file.buffer.sizename>
<value>4096value>
property>
<property>
<name>fs.trash.intervalname>
<value>10080value>
property>
configuration>
[hadoop@centos128 hadoop]$ vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>node01:9868value>
property>
<property>
<name>dfs.namenode.http-addressname>
<value>node01:9870value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:///bigdata/install/hadoop-3.1.4/hadoopDatas/namenodeDatasvalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:///bigdata/install/hadoop-3.1.4/hadoopDatas/datanodeDatasvalue>
property>
<property>
<name>dfs.namenode.edits.dirname>
<value>file:///bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/nn/editsvalue>
property>
<property>
<name>dfs.namenode.checkpoint.dirname>
<value>file:///bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/snn/namevalue>
property>
<property>
<name>dfs.namenode.checkpoint.edits.dirname>
<value>file:///bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/nn/snn/editsvalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue>
property>
<property>
<name>dfs.blocksizename>
<value>134217728value>
property>
configuration>
[hadoop@centos128 hadoop]$ vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.job.ubertask.enablename>
<value>truevalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>node01:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>node01:19888value>
property>
<property>
<name>yarn.app.mapreduce.am.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.map.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.reduce.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
configuration>
[hadoop@centos128 hadoop]$ vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>node01value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>
configuration>
[hadoop@centos128 hadoop]$ vim workers
node01
node02
node03
# node01 上执行
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/tempDatas
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/namenodeDatas
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/datanodeDatas
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/nn/edits
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/snn/name
mkdir -p /bigdata/install/hadoop-3.1.4/hadoopDatas/dfs/nn/snn/edits
scp -r sourceFile username@host:destpath
[hadoop@centos128 hadoop]$ cd /bigdata/install/
[hadoop@centos128 install]$ scp -r hadoop-3.1.4/ node02:$PWD
[hadoop@centos128 install]$ scp -r hadoop-3.1.4/ node03:$PWD
sudo yum -y install rsync
# 命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
rsync -av /bigdata/soft/apache-zookeeper-3.6.2-bin.tar.gz node02:/bigdata/soft/
选项 | 功能 |
---|---|
-a | 归档拷贝 |
-v | 显示复制过程 |
rsync -av /bigdata/soft hadoop@node02:/bigdata/soft
说明:在/home/hadoop/bin这个目录下存放的脚本,hadoop用户可以在系统任何地方直接执行。
cd /home/hadoop/bin
touch xsync
vim xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo $fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo $pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=1; host<4; host++)); do
echo ------------------- node0$host --------------
rsync -av $pdir/$fname $user@node0$host:$pdir
done
cd ~/bin/
chmod 777 xsync
xsync /home/hadoop/bin/
注意:如果将xsync放到/home/hadoop/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下
sudo vim /etc/profile
# 配置Hadoop环境变量
export HADOOP_HOME=/bigdata/install/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
hdfs namenode -format
# 或者
hadoop namenode –format
has been successfully formatted
表示格式化成功start-dfs.sh
start-yarn.sh
# 已过时mr-jobhistory-daemon.sh start historyserver
mapred --daemon start historyserver
stop-dfs.sh
stop-yarn.sh
# 已过时 mr-jobhistory-daemon.sh stop historyserver
mapred --daemon stop historyserver
# 在主节点上使用以下命令启动 HDFS NameNode:
# 已过时 hadoop-daemon.sh start namenode
hdfs --daemon start namenode
# 在主节点上使用以下命令启动 HDFS SecondaryNamenode:
# 已过时 hadoop-daemon.sh start secondarynamenode
hdfs --daemon start secondarynamenode
# 在每个从节点上使用以下命令启动 HDFS DataNode:
# 已过时 hadoop-daemon.sh start datanode
hdfs --daemon start datanode
# 在主节点上使用以下命令启动 YARN ResourceManager:
# 已过时 yarn-daemon.sh start resourcemanager
yarn --daemon start resourcemanager
# 在每个从节点上使用以下命令启动 YARN nodemanager:
# 已过时 yarn-daemon.sh start nodemanager
yarn --daemon start nodemanager
cd /home/hadoop/bin/
vim hadoop.sh
#!/bin/bash
case $1 in
"start" ){
source /etc/profile;
/bigdata/install/hadoop-3.1.4/sbin/start-dfs.sh
/bigdata/install/hadoop-3.1.4/sbin/start-yarn.sh
#/bigdata/install/hadoop-3.1.4/sbin/mr-jobhistory-daemon.sh start historyserver
/bigdata/install/hadoop-3.1.4/bin/mapred --daemon start historyserver
};;
"stop"){
/bigdata/install/hadoop-3.1.4/sbin/stop-dfs.sh
/bigdata/install/hadoop-3.1.4/sbin/stop-yarn.sh
#/bigdata/install/hadoop-3.1.4/sbin/mr-jobhistory-daemon.sh stop historyserver
/bigdata/install/hadoop-3.1.4/bin/mapred --daemon stop historyserver
};;
esac
chmod 777 hadoop.sh
./hadoop.sh start # 启动hadoop集群
./hadoop.sh stop # 停止hadoop集群
C:\Windows\System32\drivers\etc\hosts
/etc/hosts
# Hadoop
192.168.254.128 hadoop01
192.168.254.130 hadoop02
192.168.254.132 hadoop03
http://hadoop01:9870
http://hadoop01:8088
http://hadoop01:19888
我们也可以通过jps在每台机器上面查看进程名称,为了方便我们以后查看进程,我们可以通过脚本一键查看所有机器的进程
在node01服务器的/home/hadoop/bin目录下创建文件xcall
cd ~/bin/
vim xcall
#!/bin/bash
params=$@
for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do
echo ============= node0$i $params =============
ssh node0$i "source /etc/profile;$params"
done
chmod 777 /home/hadoop/bin/xcall
xsync /home/hadoop/bin/
xcall jps
hadoop jar /bigdata/install/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi 5 5
提醒:如果要关闭电脑时,清一定要按照以下顺序操作,否则集群可能会出问题
关闭hadoop集群
关闭虚拟机
关闭电脑
C:\Windows\System32\drivers\etc\hosts
%JAVA_HOME%\bin
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
jdk和jre
- JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
- JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
hadoop-3.1.4.tar.gz
将它解压到一个没有中文、没有空格的目录下core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers
,拷贝到windows下hadoop的C:\hadoop-3.1.4\etc\hadoop
目录下hadoop
,如果出现下图报错,那么,将C:\hadoop-3.1.4\bin
目录中的所有cmd文件用notepad++打开,进行文档格式转换apache-maven-3.6.1-bin.zip
到某安装目录即可(也可以去官网下载maven)/path/to/local/repo
true
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
/bigdata/install/hadoop-3.1.4
拷贝到mac,比如我的目录下/Volumes/D/hadoop/hadoop-3.1.4
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/Volumes/D/hadoop/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bash_profile
,运行mapreduce的pi例子$ hadoop jar /Volumes/D/hadoop/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi 3 3
org.apache.hadoop.security.AccessControlException: Permission denied: user=yangwei, access=EXECUTE, inode="/tmp":hadoop:supergroup:drwxrwx---
hadoop@centos128 install]$ hdfs dfs -chmod -R 777 /tmp/
2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案:
Nutch的开发人员完成了相应的开源实现 HDFS(04年)和MAPREDUCE(05年),并从Nutch中剥离成为独立项目HADOOP。
到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。
Hadoop作者Doug Cutting
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
mapr
Apache Hadoop
官网地址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
Cloudera Hadoop
官网地址:https://www.cloudera.com
下载地址:http://archive.cloudera.com/cdh5/cdh/5/
Hortonworks Hadoop
官网地址:https://www.cloudera.com
注意:Hortonworks已经与Cloudera公司合并
关键词:
HDFS 模块主从架构:
YARN 模块: