1. Hadoop常用組件:
1. hadoop commons :hadoop基礎模塊玲躯。
2. HDFS:存儲數據(讀-寫),一次寫入坑傅、多次讀取呜呐。(1)namenode :元數據存儲的位置。(2)datanode: 存儲數據充边。
3. MapReduce:是一種計算模型庸推,設計思想是“分而治之”。map:拆分階段浇冰。reduce:合并階段贬媒。
4. Yarn:資源管理器,管理cpu肘习、內存际乘、虛擬代碼。包括ResourceManager 和 NodeManager漂佩。
2.偽分布式模式環(huán)境搭建:
2.1 ?Linux環(huán)境準備:
根據上一篇文章的方法脖含,在虛擬機安裝Linux CentOS 6罪塔,本節(jié)從之前安裝的操作系統(tǒng)開始繼續(xù)。
1. 修改計算機主機名(需要用root用戶):
修改配置文件:
#vi /etc/sysconfig/network
找到以“HOSTNAME=”開頭的那一行养葵,注意這里不要使用下劃線征堪。
修改成“HOSTNAME=hadoop-namenode.ipma.com”。
2. 增加普通用戶(不使用root用戶來使用hadoop):
增加用戶:
#useradd natty
#echo 123456|passwd --stdin natty
(1)passwd的man手冊关拒,--stdin選項:(--stdin : This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.)
(2)刪除用戶的命令(#userdel natty)佃蚜。
3. 虛擬機IP地址修改為靜態(tài)IP
(1)關閉VMWare的DHCP:
(2)NAT設置:
安裝后的虛擬機的IP默認是動態(tài)獲取的,需要改成靜態(tài)IP(企業(yè)服務器都是靜態(tài)IP的夏醉,服務器IP地址不能經常改變)爽锥,有以下兩種方法來調整:圖形界面、修改配置文件畔柔。設置的IP氯夷,可以首先通過ifconfig命令查看當前的IP,再將這個IP設置為靜態(tài)IP靶擦。
(3)保證物理機與虛擬機能夠互聯腮考,設置VMNET8網卡與虛擬機的靜態(tài)IP在同一個網段。
(4)調取圖形界面:
#setup --console
(5)修改配置文件:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
例如下面的配置單:
BOOTPROTO=none
IPADDR=192.168.8.128
NETMASK=255.255.255.0
GATEWAY=192.168.8.2
DNS1=192.168.8.2
DNS2=8.8.8.8
4. 關閉防火墻和selinux:
(1)關閉防火墻:
關閉防火墻服務(只在當前Session內有效玄捕,系統(tǒng)重啟后又恢復):
#service iptables stop
想要重啟后生效:
#chkconfig iptables off
(2)關閉selinux:
修改配置文件:
#vi /etc/sysconfig/selinux
添加配置: ?SELINUX=disabled
5. 配置hosts文件:
這部分完成之前配置的靜態(tài)IP和主機名的映射(IP在前踩蔚,主機名在后)。修改下邊文件:
#vi /etc/hosts
增加下面的內容:
192.168.8.168 ? ? ? ? ?hadoop-namenode.ipma.com
在/etc/hosts文件中枚粘,不要保留127.0.0.1的配置馅闽。
6. 重啟主機:
完成上邊所有的配置后,重啟主機以生效配置:
#reboot
7. 生成目錄結構:
對于目錄結構馍迄,不同的人有不同的使用習慣福也。不一定非要按照這里規(guī)定的目錄結構開發(fā),可以自行設定攀圈。
(1)在/opt下生成2個目錄暴凑,兩個目錄的作用:
softwares:存放軟件的安裝包(壓縮包)的目錄。需要把各種軟件上傳到這個目錄赘来,例如jdk,hadoop,hbase安裝壓縮包等等现喳。
modules:軟件的安裝目錄(解壓后目錄)。
#mkdir /opt/softwares
#mkdir /opt/modules
將這2個目錄的 ?“所屬用戶和所屬用戶組” ?修改為 natty(為了方便犬辰,直接將目錄/opt 的權限 修改):
# chown -R natty:natty /opt/
2.2 ?安裝JDK
1. 解壓壓縮文件(使用natty用戶):
$tar zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
2. 環(huán)境變量設定(使用root用戶):
#vi /etc/profile
增加如下內容:
## JAVA HOME
JAVA_HOME=/opt/modules/jdk1.7.0_67
PATH=$PATH:$JAVA_HOME/bin
3. 立即生效環(huán)境變量(使用natty用戶):
$source /etc/profile
4. 刪除系統(tǒng)中已經默認安裝的jdk:
因為jdk十分常用嗦篱,所以很多Linux操作系統(tǒng)已經默認安裝了,需要將這些默認安裝的版本刪除幌缝。
首先默色,先查詢系統(tǒng)中已經安裝了哪些 java的rpm包:
#rpm -qa | grep java
根據查詢結果,我的版本的操作系統(tǒng)需要刪除的安裝包:
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
PS : 卸載rpm軟件包,使用命令rpm -e 腿宰。 ?
--nodeps選項的官方man文檔:
--nodes ?: ?Don’t check dependencies before uninstalling the packages.
2.3 ?hadoop安裝和配置:
1. 解壓壓縮包(使用natty用戶):
$ tar zxvf hadoop-2.5.0.tar.gz -C /opt/modules/
2. 修改配置文件。
修改目錄 /opt/modules/hadoop-2.5.0/etc/hadoop ?的幾個文件:
(1)在下邊3個文件中添加JAVA_HOME環(huán)境變量:
hadoop-env.sh:
export JAVA_HOME=/opt/modules/jdk1.7.0_67
yarn-env.sh:
export JAVA_HOME=/opt/modules/jdk1.7.0_67
mapred-env.sh:
export JAVA_HOME=/opt/modules/jdk1.7.0_67
(2)修改core-site.xml 和 hdfs-site.xml :
core-site.xml:
<property>
? ? ? ? ? <name>fs.defaultFS</name>
? ? ? ? ?<value>hdfs://hadoop-namenode.ipma.com:8020</value>
</property>
配置項 fs.defaultFS的官方解釋:
The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem
hdfs-site.xml:
<property>
? ? ? ? ? ?<name>dfs.replication</name>
? ? ? ? ? ?<value>1</value>
</property>
HDFS采用冗余存儲缘厢,一般分布式集群設定的副本數是3吃度,但是因為這里配置的偽分布式,只包含一個節(jié)點贴硫,所以設置為1.
3. 啟動HDFS:
Hadoop在安裝和基本配置完成后椿每,第一次啟動HDFS時,需要做一次格式化英遭,格式化后HDFS才可以使用间护。
格式化HDFS:
$ bin/hdfs namenode -format
啟動namenode和datanode:
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
查看啟動的java進程:
$ jps
4. HDFS的簡單測試:
在格式化HDFS,并啟動了namenode和datanode以后挖诸,我們做一個簡單的測試來驗證HDFS是否生效汁尺。在這里,我們將Linux中的一個文件上傳到HDFS多律,并在HDFS查看文件的內容:
$ bin/hdfs dfs -mkdir /input
$ bin/hdfs dfs -put /etc/yum.conf /input
$ bin/hdfs dfs -ls /input
$ bin/hdfs dfs -cat /input/yum.conf
-put是很常用的選項痴突,從linux上傳文件到hdfs。
2.4 Yarn相關配置
1. yarn和mapred配置:
在目錄 /opt/modules/hadoop-2.5.0/etc/hadoop ?中修改Yarn和MapReduce的配置文件:
mapred-site.xml :
<property>
? ? ? ? ? ?<name>mapreduce.framework.name</name>
? ? ? ? ? ?<value>yarn</value>
</property>
配置mapreduce的運行框架為“yarn”狼荞。
yarn-site.xml:
<property>
? ? ? ? ? ? ? ?<name>yarn.nodemanager.aux-services</name>
? ? ? ? ? ? ? ?<value>mapreduce_shuffle</value>
</property>
2. 啟動yarn相關服務:
啟動ResourceManager 和 NodeManager:
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
啟動了服務后辽装,可以在瀏覽器中管理:
http://192.168.17.128:50070/
http://192.168.17.128:8088/
3. MapReduce測試:
下面以WordCount程序測試 MapReduce調用。
在hadoop的安裝目錄下相味,有一個jar包存放一些自帶的mapreduce程序的jar包拾积。
文件目錄位置是:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar。
查看該jar包的內程序類:
$jar tvf hadoop-mapreduce-examples-2.4.1.jar
執(zhí)行wordcount mapreduce程序:
$bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /user/input /output/01
4. 日志查看
在運行過程中丰涉,如果出現錯誤拓巧,可以查看相關日志來找出錯點。日志所在位置:
$HADOOP_HOME/logs
在logs目錄下昔搂,有兩類日志玲销,分別是 *.log 和 *.out兩類日志。
例如 ?hadoop-[linux用戶名]-[hadoop角色]-[主機名].log[out]
這兩種日志的作用:
.log:通過log4j記錄的摘符,記錄大部分應用程序的日志信息
.out:記錄標準輸出和標準錯誤日志贤斜,少量記錄
5. dfs常用的命令:
hdfs常用的命令和Linux命令類似,有少部分有差異逛裤,下面列舉幾個常用的命令:
dfs -put [localsrc] [dst] ? 從Linux系統(tǒng)上傳文件到hdfs上瘩绒。
dfs -du [dst] ? 查看空間大小使用情況。
dfs -chmod ?分配權限
2.5 其他hadoop配置:
1. xml文件配置:
hdfs-site.xml:
<property>
? ? ? ? ? ? ? <name>dfs.namenode.http-address</name>
? ? ? ? ? ? ? <value>hadoop-namenode.ipma.com:50070</value>
</property>
The address and the base port where the dfs namenode web ui will listen on.
core-site.xml:
<property>
? ? ? ? ? ? ? <name>hadoop.tmp.dir</name>
? ? ? ? ? ? ? <value>/opt/modules/hadoop-2.5.0/data</value>
</property>
A base for other temporary directories.
yarn-site.xml:
<property>
? ? ? ? ? ? ? <name>yarn.resourcemanager.hostname</name>
? ? ? ? ? ? ? ?<value>hadoop-namenode.ipma.com</value>
</property>
配置ResourceManager带族。
2. 啟動日志聚合:
(1)增加配置:
yarn-site.xml:
<property>
? ? ? ? ? ? ? <name>yarn.log-aggregation-enable</name>
? ? ? ? ? ? ? <value>true</value>
</property>
<property>
? ? ? ? ? ? ? <name>yarn.log-aggregation.retain-seconds</name>
? ? ? ? ? ? ? <value>86400</value>
</property>
mapred-site.xml
<property>
? ? ? ? ? ? ? <name>mapreduce.jobhistory.webapp.address</name>
? ? ? ? ? ? ? <value>hadoop-namenode.ipma.com:19888</value>
</property>
(2)啟動服務:
$ sbin/mr-jobhistory-daemon.sh start historyserver