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
掉