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
建議建立一個單獨的用戶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) ALL
$ pkexec chmod 0440 /etc/sudoers
複製代碼
SSH 免祕鑰
在 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 -xzf 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 -xzf 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
3190 Jps
2872 ResourceManager
3151 JobHistoryServer
複製代碼
查看端口占用狀況
netstat -tnlp | grep java
複製代碼
訪問node1
cd /home/hadoop/hadoop-2.7.4/sbin
./stop-all.sh
複製代碼
或者 jps 查看進程kill
掉