1. hadoop 生態概況
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。
用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
具有可靠、高效、可伸縮的特點。
Hadoop的核心是YARN,HDFS和Mapreduce
下圖是hadoop生態系統,集成spark生態圈。在未來一段時間內,hadoop將于spark共存,hadoop與spark
都能部署在yarn、mesos的資源管理系統之上
在linux上安裝步驟如下
1、關閉防火墻
#chkconfig iptables --list
#chkconfig iptables off
#service iptables status
#service iptables stop
2、配置IP地址
#cd /etc/sysconfig/network-scripts/
橋接模式
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:fb:e0:db
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=192.168.0.10
TYPE=Ethernet
UUID="b6fd9228-061a-432d-80fe-f3597954261b"
NETMASK=255.255.255.0
DNS2=180.168.255.118
GATEWAY=192.168.0.1
DNS1=116.228.111.18
USERCTL=no
ARPCHECK=no
3、修改主機名
更改/etc下的hosts文件,在提示符下輸入vi /etc/hosts,然后將localhost.localdomain改為想要設置的主機名
4、安裝JKD1.8.151
在/etc/profile文件中寫入
export PATH
JAVA_HOME=/zhangjun/programe/jdk1.8.0_151
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH
export CLASSPATH
5、安裝hadoop3.0.0
在/etc/profile文件中寫入
export HADOOP_HOME=/zhangjun/programe/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6、使配置文件生效
#source /etc/profile
7、測試版本
8、重要目錄說明
Hadoop安裝包目錄下有幾個比較重要的目錄
sbin : 啟動或停止Hadoop相關服務的腳本
bin :對Hadoop相關服務(HDFS,YARN)進行操作的腳本
etc : Hadoop的配置文件目錄
share :Hadoop的依賴jar包和文檔,文檔可以被刪掉
lib :Hadoop的本地庫(對數據進行壓縮解壓縮功能的)
9、配置hadoop
修改主機名
#cp /etc/sysconfig/network /etc/sysconfig/network.20171218.bak
#vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=hadoop
綁定主機名對應的IP地址
# cp /etc/hosts /etc/hosts.20171218.bak
#vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.10 hadoop
測試主機名
# ping hadoop
創建用戶組hadoop
#groupadd hadoop
創建用戶hadoop并添加進用戶組hadoop
#useradd -g hadoop -d /home/hadoop -s /bin/bash -m hadoop
其含義如下:
-d, --home HOME_DIR
-g, --gid GROUP
-s, --shell SHELL
-m, --create-home
添加visudo權限
#visudo
其中
visudo <=> vi /etc/sudoers
配置ssh免密碼登錄
1) 驗證是否安裝ssh:ssh -version
顯示如下的話則成功安裝了
OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013
Bad escape character 'rsion'.
否則安裝ssh:sudo apt-get install ssh
2)ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
解釋一下,ssh-keygen代表生成密鑰;-t(注意區分大小寫)表示指定生成的密鑰類型;dsa是dsa密鑰認證的意思,即密鑰類型;-P用 于提供密語;-f指定生成的密鑰文件。(關于密鑰密語的相關知識這里就不詳細介紹了,里面會涉及SSH的一些知識,如果讀者有興趣,可以自行查閱資料。)
.ssh表示ssh文件是隱藏的。
在Ubuntu中,~代表當前用戶文件夾,這里即/home/u。
這個命令會在.ssh文件夾下創建兩個文件id_dsa及id_dsa.pub,這是SSH的一對私鑰和公鑰,類似于鑰匙及鎖,把id_dsa.pub(公鑰)追加到授權的key里面去。
3)cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
這段話的意思是把公鑰加到用于認證的公鑰文件中,這里的authorized_keys是用于認證的公鑰文件。
至此無密碼登錄本機已設置完畢。
4)現在可以登入ssh確認以后登錄時不用輸入密碼
#~$ ssh localhost
# ~$ exit
這樣以后登錄就不用輸入密碼了。
5)scp <本地文件名> <用戶名>@<ssh服務器地址>:<上傳保存路徑即文件名>
由于使用ssh,我們無法使用簡單的拖拽或者復制粘貼操作對本地計算機和ssh服務器上的文件進行交流。我們需要用到scp命令行。
舉例以說明。如果希望將當前目錄下的a.txt文件上傳到ssh服務器上test文件夾并改名為b.txt,其中ssh服務器網址為127.0.0.1,用戶名admin。代碼如下:
程序代碼
scp a.txt admin@127.0.0.1:./test/b.txt
下載也很簡單,只需要將“本地文件名”和后面服務器的信息對調即可。
scp hadoop-1.0.3.tar.gz hadoop02@10.130.26.18:~/
10、配置(本地單獨模式)standalone mode
10.1、在Hadoop的安裝目錄下,創建input目錄
#cd
#mkdir -p input
10.2、修改hadoop中hadoop-env.sh的JAVA_HOME路徑
原內容
export JAVA_HOME=${JAVA_HOME}
修改內容
export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_151
10.3、測試是否安裝成功hadoop
#hadoop
說明已經成功安裝
10.4、單詞統計
創建輸入文件夾input放輸入文件
# /home/hadoop/input/
#vim wordcount.txt
Hi, This is a test file.
Hi, I love hadoop and love you .
運行單詞統計
# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /home/hadoop/input/wordcount.txt /home/hadoop/output/
刪除output
#rm -rf /home/hadoop/output/
再次運行
查看輸出文件
# cd /home/hadoop/output/
#ll
#more part-r-00000
10.5、備份單機模式文件路徑
10.6、至此單機安裝完成
11、配置(偽分布式模式)pseudo-distributed mode
11.1、說明
Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /$HADOOP_HOME/etc/hadoop/ 中,偽分布式至少需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。
Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
11.2、關閉防火墻
#chkconfig iptables --list
#chkconfig iptables off
#service iptables status
#service iptables stop
11.3、修改IP地址及hostname
參考系統管理文檔
DEVICE=eth0
BOOTPROTO=none
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
HWADDR=00:0c:29:fb:e0:db
IPADDR=192.168.0.10
NETMASK=255.255.255.0
DNS2=8.8.8.8
GATEWAY=192.168.0.1
DNS1=8.8.8.8
只修改標紅的地方
[root@master soft]# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
HWADDR=00:0c:29:fb:e0:db
IPADDR=192.168.0.10
NETMASK=255.255.255.0
DNS2=8.8.8.8
GATEWAY=192.168.0.1
DNS1=8.8.8.8
[root@master soft]# more /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=master
[root@master soft]# more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.10 master
[root@master soft]#
11.4、修改hadoop配置文件
Hadoop 的配置文件位于 /$HADOOP_HOME/etc/hadoop/ 中,偽分布式至少需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。
Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
11.4.1、備份文件
[root@master hadoop]# cd $HADOOP_HOME/etc/hadoop
[root@master hadoop]# pwd
/home/hadoop/soft/hadoop-2.7.5/etc/hadoop
備份文件
[root@master hadoop]# cp core-site.xml bak.20171218.core-site.xml
[root@master hadoop]# cp hdfs-site.xml bak.20171218.hdfs-site.xml
[root@master hadoop]# cp yarn-site.xml bak.20171218.yarn-site.xml
[root@master hadoop]# cp yarn-env.sh bak.20171218.yarn-env.sh
復制文件
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
11.5、修改hadoop中hadoop-env.sh的JAVA_HOME路徑
原內容
export JAVA_HOME=${JAVA_HOME}
修改內容
export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_151
11.6、修改hadoop中yarn-env.sh的JAVA_HOME路徑
原內容
export JAVA_HOME=${JAVA_HOME}
修改內容
export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_151
11.6.1、修改core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:///home/hadoop/tmp</value>
</property>
</configuration>
11.6.2、修改hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hdfs/data</value>
</property>
</configuration>
偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數,則默認使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。
11.6.3、修改mapred-site.xml
文件默認不存在,只有一個模板,復制一份
# cp mapred-site.xml.template mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
11.6.4、修改yarn-site.xml
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
11.7、格式化namenode
# hdfs namenode -format
11.8、jps查看進程
#jps
11.9、啟動服務
#start-all.sh
[root@master hadoop]# jps
5425 Jps
[root@master hadoop]# start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/soft/hadoop-2.7.5/logs/hadoop-root-namenode-master.out
localhost: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.5/logs/hadoop-root-datanode-master.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.5/logs/hadoop-root-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/soft/hadoop-2.7.5/logs/yarn-root-resourcemanager-master.out
localhost: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.5/logs/yarn-root-nodemanager-master.out
[root@master hadoop]# jps
5682 DataNode
5843 SecondaryNameNode
5559 NameNode
6103 NodeManager
6007 ResourceManager
6415 Jps
[root@master hadoop]#
http://master:8088
http://192.168.0.10:8088
MapReduce的Web界面
http://master:50030
HDFS的Web界面
本文為張軍原創文章,轉載無需和我聯系,但請注明來自張軍的軍軍小站,個人博客http://m.eyofj.com
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
