Hadoop單機(jī)部署
1. Hadoop介紹
Hadoop是一個能夠?qū)A繑?shù)據(jù)進(jìn)行分布式處理的系統(tǒng)架構(gòu)。
Hadoop框架的核心是:HDFS和MapReduce秧饮。
HDFS分布式文件系統(tǒng)為海量的數(shù)據(jù)提供了存儲阴颖,
MapReduce分布式處理框架為海量的數(shù)據(jù)提供了計算筐高。
2. Hadoop安裝
2.1 安裝java
Hadoop是使用JAVA寫的也拜,所以需要先安裝JAVA環(huán)境。
本次安裝的是hadoop-2.7.0霎肯,需要JDK 7以上版本擎颖。
查看是否安裝jdk:java -version
# yum install java-1.7.0-openjdk
# yum install java-1.7.0-openjdk-devel
安裝后確認(rèn)# java –version
2.2 需要ssh和rsync(遠(yuǎn)程數(shù)據(jù)同步工具)
查看ssh有沒有安裝:rpm -qa|grep ssh
若沒有則安裝:yum -y install openssh openssh-client openssh-server openssh-askpass
查看ssh服務(wù)狀態(tài):service sshd status
重啟ssh服務(wù):service sshd restart
查看rsync有沒有安裝:rpm -qa|grep rsync
若沒有則安裝:yum -y install rsync
rsync的用法:https://www.cnblogs.com/noxy/p/8986164.html
Linux系統(tǒng)一般都已經(jīng)默認(rèn)安裝了,如果沒有观游,yum安裝搂捧。
2.3 下載Hadoop
從官網(wǎng)下載Hadoop最新版2.7.0
# cd /usr/local/
#wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
將hadoop解壓到/usr/local/下
# tar zxvf ?hadoop-2.7.7.tar.gz
2.4 設(shè)置環(huán)境變量
設(shè)置hadoop和JAVA的環(huán)境變量.
JAVA_HOME是JDK的位置
查看jdk的路徑:
進(jìn)入目錄:cd /usr/lib/jvm
查看jdk:ll
找到j(luò)ava-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64
將jdk的路徑配置到環(huán)境變量/etc/profile中
查看hadoop路徑,進(jìn)入hadoop的bin目錄:cd/usr/local/hadoop-2.7.7/bin
查看目錄路徑:pwd 將pwd的結(jié)果/usr/local/hadoop-2.7.7/bin配置到/etc/profile中
2.4.1# vi /etc/profile
Export?PATH=/usr/local/hadoop-2.7.7/bin:$PATH
Export?JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64
//請根據(jù)個人計算機(jī)安裝情況,設(shè)置本機(jī)的JAVA_HOME
讓設(shè)置生效:# source /etc/profile
2.4.2設(shè)置Hadoop的JAVA_HOME
# cd /usr/local/hadoop-2.7.7/
# vi etc/hadoop/hadoop-env.sh
Export?JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64
2.4.3關(guān)閉linux系統(tǒng)的防火墻(centos6)
[root@djt002 ~]# service iptables status
[root@djt002 ~]# chkconfig iptables off //永久關(guān)閉防火墻?
[root@djt002 ~]# service iptables stop //臨時關(guān)閉防火墻?
[root@djt002 ~]# service iptables status
iptables: Firewall is not running. //查看防火墻狀態(tài)
//Centos7的方法如下
systemctl status firewalld//查看防火墻的狀態(tài)
systemctl stop firewalld//關(guān)閉防火墻
2.5關(guān)閉SELinux
SELinux一共有3種狀態(tài)懂缕,分別是Enforcing允跑,Permissive和Disabled狀態(tài)。第一種是默認(rèn)狀態(tài)提佣,表示強(qiáng)制啟用吮蛹,第二種是寬容的意思荤崇,即大部分規(guī)則都放行拌屏。第三種是禁用,即不設(shè)置任何規(guī)則术荤。只能通過setenforce命令來設(shè)置前面兩種狀態(tài)倚喂,而如果想修改為disable狀態(tài),需要修改配置文件瓣戚,同時重啟系統(tǒng)端圈。我們先看修改,Enforcing狀態(tài)的值是1子库,permissive狀態(tài)是0舱权,因此設(shè)置為permissive,命令就是:
setenforce 0
查看一下SELinux的狀態(tài): getenforce
設(shè)置SELinux為permissive:setenforce 0
將selinux的狀態(tài)設(shè)置成disabled
vi /etc/selinux/config
SETLINUX=disabled
到此仑嗅,Hadoop的安裝就算完成了宴倍,接下來進(jìn)行部署和使用张症。
3. 單機(jī)部署
這種模式是,1個節(jié)點上運行鸵贬,HDFS daemon的 NameNode 和 DataNode俗他、YARN daemon的 ResourceManger 和 NodeManager,分別啟動單獨的java進(jìn)程阔逼,主要用于調(diào)試兆衅。
3.2.1 修改設(shè)定文件
# vi etc/hadoop/core-site.xml
<configuration>
????<property>
????????<name>fs.defaultFS</name>
????????<value>hdfs://localhost:9000</value>
????</property>
</configuration>
# vi etc/hadoop/hdfs-site.xml
<configuration>
????<property>
????????<name>dfs.replication</name>
????????<value>1</value>
????</property>
</configuration>
3.2.2 設(shè)定本機(jī)的無密碼ssh登陸
# ssh-keygen -t rsa
截圖如下:
[root@localhost hadoop-2.7.7]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:M83eJALeKFPvO6awt28JpubVxiC87s6RYGLUKqlqex0 root@localhost
The key's randomart image is:
+---[RSA 2048]----+
| ????????????????|
| ?. ?????????????|
| . . ?o ?????????|
|.... o = o ??????|
|+oo = + S + . ???|
|+o . Eo= = + ????|
|. ??*oo.=.. . ???|
|.. +o*..=. ??????|
|o.o=B.o*o. ??????|
+----[SHA256]-----+
再執(zhí)行下面的命令
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.2.3?執(zhí)行Hadoop job
MapReduce v2 叫做YARN,下面分別操作一下這兩種job
3.2.4 執(zhí)行MapReduce job
3.2.4.1 格式化文件系統(tǒng)
# hdfs namenode -format
3.2.4.2 啟動名稱節(jié)點和數(shù)據(jù)節(jié)點后臺進(jìn)程
# sbin/start-dfs.sh
在localhost啟動一個1個NameNode和1個DataNode嗜浮,在0.0.0.0啟動第二個NameNode
3.2.4.3 確認(rèn)
jps
3.2.4.4 訪問NameNode的web頁面
http://localhost:50070/
3.2.4.5 創(chuàng)建HDFS
# hdfs dfs -mkdir /user
# hdfs dfs -mkdir /user/test
3.2.4.6 拷貝input文件到HDFS目錄下s
1# hdfs dfs -put etc/hadoop /user/test/input
確認(rèn)羡亩,查看
1# hadoop fs -ls /user/test/input
3.2.4.7 執(zhí)行Hadoop job
1#hadoop jar /usr/local/hadoop-2.7.7/share/hadoop-mapreduce-examples-2.7.7.jar grep /user/test/input output 'dfs[a-z.]+'
3.2.4.8 確認(rèn)執(zhí)行結(jié)果
1# hdfs dfs -cat output/*
[root@localhost mapreduce]# hdfs dfs -cat output/*
6 dfs.audit.logger
4 dfs.class
3 dfs.logger
3 dfs.server.namenode.
2 dfs.audit.log.maxbackupindex
2 dfs.period
2 dfs.audit.log.maxfilesize
1 dfs.log
1 dfs.file
1 dfs.servers
1 dfsadmin
1 dfsmetrics.log
1 dfs.replication
[root@localhost mapreduce]#
hdfs ?dfs -help |less?/hdfs 查看幫助命令
或者從HDFS拷貝到本地查看
# bin/hdfs dfs -get hadoop中的文件路徑 ???output
# cat output/*
3.2.5.1 修改設(shè)定文件
# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
# vi etc/hadoop/mapred-site.xml
<configuration>
????<property>
????????<name>mapreduce.framework.name</name>
????????<value>yarn</value>
????</property>
</configuration>
# vi etc/hadoop/yarn-site.xml
<configuration>
????<property>
????????<name>yarn.nodemanager.aux-services</name>
????????<value>mapreduce_shuffle</value>
????</property>
</configuration>
3.2.5.2 啟動ResourceManger和NodeManager后臺進(jìn)程
[root@localhost hadoop-2.7.7]# sbin/start-yarn.sh
[root@localhost hadoop-2.7.7]# jps
3.2.5.4 訪問ResourceManger的web頁面
http://localhost:8088/
3.2.5.5 執(zhí)行hadoop job
1# hadoop jar /usr/local/hadoop-2.7.7/share/hadoop/mapreduce
/hadoop-mapreduce-examples-2.7.0.jar grep /user/test/input output 'dfs[a-z.]+'
3.2.5.6 確認(rèn)執(zhí)行結(jié)果
1# hdfs dfs -cat output/*
執(zhí)行結(jié)果和MapReduce job相同
3.2.5.7 停止daemon
1# sbin/stop-yarn.sh
3.2.5.8 問題點
1. 單節(jié)點測試情況下,同樣的input危融,時間上YARN比MapReduce好像慢很多夕春,查看日志發(fā)現(xiàn)DataNode上GC發(fā)生頻率較高,可能是測試用VM配置比較低有關(guān)专挪。
2.?出現(xiàn)下面警告及志,是因為沒有啟動job history server
1java.io.IOException: java.net.ConnectException: Call From test166/10.86.255.166 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused;
啟動jobhistory daemon
1# sbin/mr-jobhistory-daemon.sh start historyserver
確認(rèn)
1# jps
訪問Job History Server的web頁面
http://localhost:19888/
3.?出現(xiàn)下面警告,DataNode日志中有錯誤寨腔,重啟服務(wù)后恢復(fù)
1java.io.IOException: java.io.IOException: Unknown Job job_1451384977088_0005
3.3 啟動/停止
也可以用下面的啟動/停止命令速侈,等同于start/stop-dfs.sh + start/stop-yarn.sh
1# sbin/start-all.sh
1# sbin/stop-all.sh