2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutchjava
Hadoop 于 2005 年秋天做为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被归入称为 Hadoop 的项目中node
分布式存储系统HDFS (Hadoop Distributed File System )web
分布式计算框架MapReduceapache
高容错性编程
适合批处理segmentfault
适合大数据处理centos
可构建在廉价机器上服务器
低延迟数据访问并发
小文件存取app
并发写入、文件随机修改
JDK:1.8 Hadoop Release:2.7.4 centos:7.3 node1(master) 主机: 192.168.252.121 node2(slave1) 从机: 192.168.252.122 node3(slave2) 从机: 192.168.252.123
安装 JDK
SSH 免秘钥
建议建立一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统
$ useradd hadoop $ passwd hadoop New password: Retype new password:
受权 root 权限,在root
下面加一条hadoop
的hadoop ALL=(ALL) ALL
$ chmod 777 /etc/sudoers $ vi /etc/sudoers root ALL=(ALL) ALL hadoop ALL=(ALL) NOPASSWD:ALL $ pkexec chmod 0440 /etc/sudoers
在 ndoe1 上操做
su hadoop cd /home/hadoop/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz tar -zxvf hadoop-2.7.4.tar.gz
若是是对全部的用户都生效就修改vi /etc/profile
文件
若是只针对当前用户生效就修改 vi ~/.bahsrc
文件
sudo vi /etc/profile
#hadoop export PATH=${HADOOP_HOME}/bin:$PATH export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/
使环境变量生效,运行 source /etc/profile
使/etc/profile
文件生效
进入hadoop 配置文件目录
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/
编辑 hadoop-env.sh
文件,找到 JAVA_HOME
改成 JDK 的安装目录
sudo vi hadoop-env.sh
export JAVA_HOME=/lib/jvm
打开 core-site.xml文件并对其进行编辑,以下图所示。
vi core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hadoop-2.7.4/tmp</value> </property> </configuration>
打开hdfs-site.xml文件并对其进行编辑,以下图所示。
vi hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>node1:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/data</value> </property> </configuration>
目录下么没有这个文件,这有一个模板,咱们须要先拷贝一份
cp mapred-site.xml.template mapred-site.xml vi mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</value> </property> </configuration>
vi yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
将 hadoop-2.7.4 文件夹重打包后复制到其余子节点
cd /home/hadoop/ tar zcvf hadoop.tar.gz hadoop-2.7.4 scp hadoop.tar.gz hadoop@node2:/home/hadoop/ scp hadoop.tar.gz hadoop@node3:/home/hadoop/
在其余子节点 解压
tar -zxvf hadoop.tar.gz
修改(Master主机)node1/etc/hadoop/slaves
该文件指定哪些服务器节点是datanode
节点。删除locahost
,添加全部datanode
节点的主机名
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/ [hadoop@node1 hadoop]$ cat slaves node2 node3
格式化namenode和datanode并启动,(在master上执行就能够了 不须要在slave上执行)
cd /home/hadoop/hadoop-2.7.4/bin ./hadoop namenode -format ./hadoop datanode -format
关闭防火墙
systemctl stop firewalld.service
cd /home/hadoop/hadoop-2.7.4/sbin ./start-dfs.sh ./start-yarn.sh ./mr-jobhistory-daemon.sh start historyserver
或者
./start-all.sh ./mr-jobhistory-daemon.sh start historyserver
查看启动进程,缺乏如下任一进程都表示出错
$ jps 2528 NameNode 2720 SecondaryNameNode 2872 ResourceManager 3151 JobHistoryServer
查看端口占用状况
netstat -tnlp | grep java
访问node1
cd /home/hadoop/hadoop-2.7.4/sbin
./stop-all.sh
或者 jps 查看进程kill
掉