1. hadoop集群啟動是否主要在主節點start-all.sh
這個看你的部署,如果是偽分布式則直接start-all.sh就可以了。一般hadoop配置的時候都使用了ssh,沒有這個是不能運行起來的。分布式的話,每台都必須配置ssh,以及一些其他的參數配置,這樣配置好每台機器以後,只要在主節點使用start-all.sh就可以相應的啟動所屬的從節點的。
2. 萌新提問關於Hadoop請說簡單點,Hadoop集群的啟動,是不是只要在master啟動就OK了
Hadoop集群啟動之後,namenode是通過SSH來啟動和停止各個節點上的各種守護進程的,所以在節點之間執行指令的時候不能有密碼
3. 簡述啟動和關閉Hadoop集群的方法
摘要 1. 格式化NameNode
4. hadoop集群中hadoop需要啟動哪些進程
啟動Hadoop
啟動Hadoop集群需要啟動HDFS集群和Map/Rece集群。
格式化一個新的分布式文件系統:
$ bin/hadoop namenode -format
在分配的NameNode上,運行下面的命令啟動HDFS:
$ bin/start-dfs.sh
bin/start-dfs.sh腳本會參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動DataNode守護進程。
在分配的JobTracker上,運行下面的命令啟動Map/Rece:
$ bin/start-mapred.sh
bin/start-mapred.sh腳本會參照JobTracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動TaskTracker守護進程。
-----來自官方文檔
5. 怎樣在linux系統上搭建Hadoop集群
(1)下載jdk,在官網下載,下載rpm的包
(2)hadoop包的下載,官網上下載
download hadoop->release->mirror site(鏡像站)->隨便選擇離自己近的(HTTP下的第一個)->選擇2.7.2->下載.tar.gz
(3)將兩個包遠程傳輸到linux虛擬機中
(4)將主機名和ip地址進行適配,讓我們的ip地址和主機名(如bigdata)相匹配:寫到/etc/hosts裡面
vi /etc/hosts
按「i」進入插入狀態 將原有的地址注釋掉
在新的一行輸入:ip地址 主機名(如172.17.171.42 bigdata)(註:可以雙擊xshell的窗口再打開一個連接窗口,可以在新的窗口查詢ip地址並進行復制)
按「Esc」退出插入狀態
輸入:wq保存退出
修改完之後可以輸入hostname回車,查看是否成功
reboot:重啟,使得剛剛的修改生效
(5)將包放到opt下:cp hadoop-2.7.2.tar.gz /opt/
cp jdk-8u111-linux-x64.rpm /opt/
進入opt:cd /opt/
查看opt下的文件:ll
(6)安裝jdk,配置jdk的環境變數
安裝命令:rpm -ivh jdk-Bu101-linux-x64.rpm
配置環境變數:進入profile進行編輯:vi /etc/profile
並按照上面的方式在最後寫入並保存:java_HOME=/usr/java/default/(/usr/java/default/是jdk的安裝目錄)
列印JAVA_HOME檢驗是否配置好:echo $JAVA_HOME結果發現列印出來的沒有內容因為我們對/etc/profile的修改需要通過以下命令對它生效source /etc/profile。再次輸入echo $JAVA_HOME,列印結果為/usr/java/default/
(7)驗證jdk安裝好:java -version
(8)配置SSH(免密碼登錄)
回到根目錄:cd 安裝SSH秘鑰:ssh-keygen -t rsa會自動在/root/.shh/目錄下生成
查看目錄:ll .ssh/有兩個新生成的文件id_rsa(私鑰),id_rsa.pub(公鑰)
進入.ssh/:cd .ssh/
將公鑰寫入authorized_key中:cat id_rsa.pub >> authorized_keys
修改authorized_keys文件的許可權:chmod 644 authorized_keys
修改完後退出.ssh的目錄cd進入初始目錄輸入:ssh bigdata(bigdata為你要遠程登錄的主機名或者ip地址)第一次登錄需要確認是否需要繼續登錄輸入yes繼續登錄
退出exit
(9)安裝及配置hadoop
解壓:tar zxf hadoop-2.7.2.tar.gz
查看/opt目錄下是否已經存在解壓的文件:ll(結果為出現hadoop-2.7.2)
繼續查看hadoop-2.7.2里的內容:cd hadoop-2.7.2
配置HADOOP_HOME:修改/etc/profile
進入hadoop的配置文件目錄cd /opt/hadoop-2.7.2/etc/hadoop/,會用的的配置文件如下:
core-site.xml
配置hadoop的文件系統即HDFS的埠是什麼。
配置項1為default.name,值為hdfs://bigdata:9000(主機名:bigdata也可也寫成ip地址,埠9000習慣用)
配置項2為hadoop臨時文件,其實就是配置一個目錄,配置完後要去創建這個目錄,否則會存在問題。
配置項3分布式文件系統的垃圾箱,值為4320表示3分鍾回去清理一次
<property>
<name>fs.default.name</name>
<value>hdfs://bigdata:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.2/current/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
hdfs-site.xml
配置項1,namenode的細節實際上就是一個目錄
配置項2,datanode的細節,真實環境中datanode的內容不需要再namenode的系統下配置,在此配置的原因是我們的系統是偽分布式系統,namenode和datanode在一台機器上
配置項3,副本的數量,在hdfs中每個塊有幾個副本
配置項4,HDFS是否啟用web
配置項5,HDFS的用戶組
配置項6,HDFS的許可權,現在配置為不開啟許可權
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.7.2/current/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.7.2/current/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
創建配置文件中不存在的目錄:mkdir -p /opt/hadoop-2.7.2/current/data
mkdir -p /opt/hadoop-2.7.2/current/dfs/name
mkdir -p /opt/hadoop-2.7.2/current/tmp
yarn-site.xml
配置項1,resourcemanager的hostname,值為你運行的那台機器的主機名或IP地址
配置項2,nodemanager相關的東西
配置項3,nodemanager相關的東西
配置項4,resourcemanager的埠,主機名+埠號(IP+埠)
配置項5,resourcemanager調度器的埠
配置項6,resourcemanager.resource-tracker,埠
配置項7,埠
配置項8,埠
配置項9,日誌是否啟動
配置項10,日誌保留的時間長短(以秒為單位)
配置項11,日誌檢查的時間
配置項12,目錄
配置項13,目錄的前綴
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>bigdata:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>bigdata:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>bigdata:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>bigdata:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
mapred-site.xml
沒有mapred-site.xml,輸入vi mapred-按「TAB」發現有mapred-site.xml.template,對該文件進行復制
cp mapred-site.xml.template mapred-site.xml 配置項1,maprece的框架
配置項2,maprece的通信埠
配置項3,maprece的作業歷史記錄埠
配置項4,maprece的作業歷史記錄埠
配置項5,maprece的作業歷史記錄已完成的日誌目錄,在hdfs上
配置項6,maprece中間完成情況日誌目錄
配置項7,maprece的ubertask是否開啟
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobtracker.http.address</name>
<value>bigdata:50030</value>
</property>
<property>
<name>maprece.jobhisotry.address</name>
<value>bigdata:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>bigdata:19888</value>
</property>
<property>
<name>maprece.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>maprece.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>maprece.job.ubertask.enable</name>
<value>true</value>
</property>
slaves
bigdata
hadoop-env.sh
JAVA_HOME=/usr/java/default/
格式化分布式文件系統(hdfs):hdfs namenode -format
成功的標志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.
啟動Hadoop集群:/opt/hadoop-2.7.2/sbin/start-all.sh
驗證Hadoop集群是否正常啟動:
jps,系統中運行的java進程;
通過埠查看(關閉防火牆或者service iptables stop在防火牆的規則中開放這些埠):
http://bigdata:50070(http://http://192.168.42.209/:50070),分布式文件系統hdfs的情況
yarn http://bigdata:18088(http://http://192.168.42.209/:50070)
6. 如何初始化,啟動及停止Hadoop集群
第一步,在Hadoop01機器上啟動Zookeeper:
[root@hadoop01 ~]# /root/apps/zookeeper/bin/zkServer.sh start
第二步,在Hadoop02機器上啟動Zookeeper:
[root@hadoop02 ~]# /root/apps/zookeeper/bin/zkServer.sh start
第三步,在Hadoop03機器上啟動Zookeeper:
[root@hadoop03 ~]# /root/apps/zookeeper/bin/zkServer.sh start
啟動Zookeeper之後,可以分別在3台機器上使用如下命令查看Zookeeper的啟動狀態:
/root/apps/zookeeper/bin/zkServer.sh status
第四步,在Hadoop01機器上啟動HDFS:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-dfs.sh
第五步,在Hadoop01機器上啟動YARN:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-yarn.sh
第六步,在Hadoop02機器上單獨啟動一個ResourceManager:
(注意這里使用的是「yarn-daemon.sh」命令,而不是「hadoop-daemon.sh」,不知道為什麼使用「hadoop-daemon.sh」無法啟動ResourceManager)
[root@hadoop02 ~]# /root/apps/hadoop/sbin/yarn-daemon.sh start resourcemanager!
7. hadoop集群如何啟動順序
zookeeper -> hadoop -> hbase
8. 如何在docker中部署hadoop2.4集群
Docker提供了一種完美隔離和打包Hadoop相關的應用程序的方法。該公司也在觀察Slider框架和Docker如何能夠一起合作來簡化此類的部署工作。目前,Hortonworks的一個客戶已經在考慮他們自己的數據平台利用HDP支持Docker的方法。他們利用Cloudbreak在雲中的Docker容器中部署Hadoop,並計劃把他們自己的數據應用程序製作成Docker鏡像以便在YARN上運行。此外,很多用戶也因為這種方式的敏捷性和兼容性,利用其進行未知環境的部署。
9. 如何查看hadoop集群是否安裝成功(用jps命令
1、用jps命令
(1)master節點
啟動集群:
cy@master:~$ start-all.sh
starting namenode, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-namenode-master.out
slave2: starting datanode, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-datanode-slave2.out
slave1: starting datanode, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-datanode-slave1.out
master: starting secondarynamenode, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-secondarynamenode-master.out
starting jobtracker, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-jobtracker-master.out
slave1: starting tasktracker, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-tasktracker-slave1.out
slave2: starting tasktracker, logging to /home/cy/Hadoop/hadoop-1.2.1/libexec/../logs/hadoop-cy-tasktracker-slave2.out
用jps命令查看Java進程:
cy@master:~$ jps
6670 NameNode
7141 Jps
7057 JobTracker
(2)slave1節點
用jps命令查看Java進程:
cy@slave1:~$ jps
3218 Jps
2805 DataNode
2995 TaskTracker
(3)slave2節點
用jps命令查看Java進程:
cy@slave2:~$ jps
2913 TaskTracker
2731 DataNode
3147 Jps
如果三台虛擬機用jps命令查詢時如上面顯示的那樣子,就說明hadoop安裝和配置成功了。
2、hadoop集群的測試,用hadoop-examples-1.2.1.jar中自帶的wordcount程序進行測試,該程序的作用是統計單詞的個數。
(1)我們現在桌面上創建一個新的文件test.txt,裡面總共有10行,每行都是hello world
(2)在HDFS系統里創建一個input文件夾,使用命令如下:
hadoop fs -mkdir input
或 hadoop fs -mkdir /user/你的用戶名/input
(3)把創建好的test.txt上傳到HDFS系統的input文件夾下,使用命令如下所示。
hadoop fs -put /home/你的用戶名/桌面/test.txt input
或 hadoop fs -put /home/你的用戶名/桌面/test.txt /user/你的用戶名/input
(4)我們可以查看test.txt是否在HDFS的input文件夾下,如下所示:
hadoop fs -ls input
如果顯示如下就說明上傳成功:
Found 1 items
-rw-r--r-- 3 cy supergroup 120 2015-05-08 20:26 /user/cy/input/test.txt
(5)執行hadoop-examples-1.2.1.jar中自帶的wordcount程序,如下:(提示:在執行下面的命令之前,你要在終端用cd命令進入到/home/cy/Hadoop/hadoop-1.2.1目錄)
hadoop jar hadoop-examples-1.2.1.jar wordcount /user/你的用戶名/input/test.txt /user/你的用戶名/output
如果顯示如下結果就說明運行成功:
15/05/08 20:31:29 INFO input.FileInputFormat: Total input paths to process : 1
15/05/08 20:31:29 INFO util.NativeCodeLoader: Loaded the native-hadoop library
15/05/08 20:31:29 WARN snappy.LoadSnappy: Snappy native library not loaded
15/05/08 20:31:30 INFO mapred.JobClient: Running job: job_201505082010_0001
15/05/08 20:31:31 INFO mapred.JobClient: map 0% rece 0%
15/05/08 20:31:35 INFO mapred.JobClient: map 100% rece 0%
15/05/08 20:31:42 INFO mapred.JobClient: map 100% rece 33%
15/05/08 20:31:43 INFO mapred.JobClient: map 100% rece 100%
15/05/08 20:31:43 INFO mapred.JobClient: Job complete: job_201505082010_0001
15/05/08 20:31:43 INFO mapred.JobClient: Counters: 29
15/05/08 20:31:43 INFO mapred.JobClient: Job Counters
15/05/08 20:31:43 INFO mapred.JobClient: Launched rece tasks=1
15/05/08 20:31:43 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=3117
15/05/08 20:31:43 INFO mapred.JobClient: Total time spent by all reces waiting after reserving slots (ms)=0
15/05/08 20:31:43 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
15/05/08 20:31:43 INFO mapred.JobClient: Launched map tasks=1
15/05/08 20:31:43 INFO mapred.JobClient: Data-local map tasks=1
15/05/08 20:31:43 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=8014
15/05/08 20:31:43 INFO mapred.JobClient: File Output Format Counters
15/05/08 20:31:43 INFO mapred.JobClient: Bytes Written=18
15/05/08 20:31:43 INFO mapred.JobClient: FileSystemCounters
15/05/08 20:31:43 INFO mapred.JobClient: FILE_BYTES_READ=30
15/05/08 20:31:43 INFO mapred.JobClient: HDFS_BYTES_READ=226
15/05/08 20:31:43 INFO mapred.JobClient: FILE_BYTES_WRITTEN=116774
15/05/08 20:31:43 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=18
15/05/08 20:31:43 INFO mapred.JobClient: File Input Format Counters
15/05/08 20:31:43 INFO mapred.JobClient: Bytes Read=120
15/05/08 20:31:43 INFO mapred.JobClient: Map-Rece Framework
15/05/08 20:31:43 INFO mapred.JobClient: Map output materialized bytes=30
15/05/08 20:31:43 INFO mapred.JobClient: Map input records=10
15/05/08 20:31:43 INFO mapred.JobClient: Rece shuffle bytes=30
15/05/08 20:31:43 INFO mapred.JobClient: Spilled Records=4
15/05/08 20:31:43 INFO mapred.JobClient: Map output bytes=200
15/05/08 20:31:43 INFO mapred.JobClient: CPU time spent (ms)=610
15/05/08 20:31:43 INFO mapred.JobClient: Total committed heap usage (bytes)=176427008
15/05/08 20:31:43 INFO mapred.JobClient: Combine input records=20
15/05/08 20:31:43 INFO mapred.JobClient: SPLIT_RAW_BYTES=106
15/05/08 20:31:43 INFO mapred.JobClient: Rece input records=2
15/05/08 20:31:43 INFO mapred.JobClient: Rece input groups=2
15/05/08 20:31:43 INFO mapred.JobClient: Combine output records=2
15/05/08 20:31:43 INFO mapred.JobClient: Physical memory (bytes) snapshot=182902784
15/05/08 20:31:43 INFO mapred.JobClient: Rece output records=2
15/05/08 20:31:43 INFO mapred.JobClient: Virtual memory (bytes) snapshot=756301824
15/05/08 20:31:43 INFO mapred.JobClient: Map output records=20
(6)我們可以使用下面的命令還查看運行後的結果:
hadoop fs -ls output
hadoop fs -text /user/你的用戶名/output/part-r-00000
如果顯示如下就說明hadoop三個節點安裝和配置成功,測試也成功了,就可以繼續更深入地使用和研究hadoop了
hello 10
world 10
10. linux怎麼鏈接hadoop的集群
前期准備
l 兩台linux虛擬機(本文使用redhat5,IP分別為 IP1、IP2)
l JDK環境(本文使用jdk1.6,網上很多配置方法,本文省略)
l Hadoop安裝包(本文使用Hadoop1.0.4)
搭建目標
210作為主機和節點機,211作為節點機。
搭建步驟
1修改hosts文件
在/etc/hosts中增加:
IP1 hadoop1
IP2 hadoop2
2 實現ssh無密碼登陸
2.1 主機(master)無密碼本機登陸
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回車,完成後會在 ~/.ssh/ 生成兩個文件: id_dsa 和 id_dsa.pub 。
這兩個是成對出現,類似鑰匙和鎖。
再把 id_dsa.pub 追加到授權 key 裡面 ( 當前並沒有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost hostname
還是要輸入密碼,一般這種情況都是因為目錄或文件的許可權問題,看看系統日誌,確實是許可權問題
.ssh下的authorized_keys許可權為600,其父目錄和祖父目錄應為755
2.2 無密碼登陸節點機(slave)
slave上執行:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
生成.ssh目錄。
將master上的authorized_keys復制到slave上:
scp authorized_keys hadoop2:~/.ssh/
實驗:在master上執行
ssh hadoop2
實現無密碼登陸。
3 配置Hadoop
3.1拷貝hadoop
將hadoop-1.0.4.tar.gz ,拷貝到usr/local 文件夾下,然後解壓。
解壓命令:
tar –zxvf hadoop-1.0.4.tar.gz
3.2查看 cat /etc/hosts
IP1 hadoop1
IP2 hadoop2
3.3 配置 conf/masters 和 conf/slaves
conf/masters:
1
IP1
conf/slaves:
1
2
IP2
IP2
3.4 配置 conf/hadoop-env.sh
加入
1
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17
3.5 配置 conf/core-site.xml
1
2
3
4
<property>
<name>fs.default.name</name>
<value>hdfs://IP1:9000</value>
</property>
3.6 配置 conf/hdfs-site.xml
加入
<property>
<name>dfs.http.address</name>
<value>IP1:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
3.7 配置conf/mapred-site.xml
加入
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.50:8012</value>
</property>
3.8 建立相關的目錄
1
/usr/local/hadoop/ //hadoop數據和namenode目錄
【注意】只創建到hadoop目錄即可,不要手動創建data和namenode目錄。
其他節點機也同樣建立該目錄。
3.9 拷貝hadoop文件到其他節點機
將hadoop文件遠程到其他節點(這樣前面的配置就都映射到了其他節點上),
命令:
1
scp -r hadoop-1.0.4 IP2:/usr/local/
3.10 格式化Active master
命令:
bin/hadoop namenode -format
3.11 啟動集群 ./start-all.sh
現在集群啟動起來了,看一下,命令:
1
bin/hadoop dfsadmin -report
2個datanode,打開web看一下
瀏覽器輸入:IP1:50070
打完收工,集群安裝完成!