1. 程式人生 > >偽分散式環境的部署,SSH,JPS

偽分散式環境的部署,SSH,JPS

首先官網:http://archive-primary.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

jps命令的常用縮寫

jps命令
[[email protected] ~]$ jps
28288 NameNode NN
27120 Jps
28410 DataNode DN
28575 SecondaryNameNode SNN

1.配置mapreduce跑到yarn

在這個路徑下/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
[

[email protected] hadoop]$ cp mapred-site.xml.template mapred-site.xml
[[email protected] hadoop]$ vi mapred-site.xml
Configure parameters as follows:
etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property> </configuration>

vi yarn-site.xml
etc/hadoop/yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

Start ResourceManager daemon and NodeManager daemon:
在這個路徑下:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

$ sbin/start-yarn.sh

成功的話會有

[[email protected] hadoop-2.6.0-cdh5.7.0]$ jps
3782 ResourceManager
3879 NodeManager
3977 Jps

然後可以在http://192.168.137.190:8088/上看情況

2.執行MR JOB

hdfs和linux都是檔案儲存系統,hdfs執行在linux,操作指令和linux大抵相同,不過要加個

hdfs dfs -xxx

啟動hdfs:


[[email protected] hadoop-2.6.0-cdh5.7.0]$ sbin/start-dfs.sh

接下來要建立map job執行需要的hdfs資料夾,之前建立的先刪了,重來一遍

hdfs dfs -rm -r -f /usr

建立資料夾

  $ bin/hdfs dfs -mkdir /user
  $ bin/hdfs dfs -mkdir /user/<username>(hadoop)

然後把linux etc/hadoop目錄放到hdfs input目錄下,input沒有指名路徑則預設放在/user/hadoop下

  $ bin/hdfs dfs -put etc/hadoop input

然後就去跑map job ,注意並不是所有map跑完才跑reduce

 $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar grep input output 'dfs[a-z.]+'
Examine the output files:

複製輸出資料夾從hdfs到linux
前一個是hdfs的資料夾,後面的是linux的資料夾,把hdfs的下載下來,linux預設當前目錄

  $ bin/hdfs dfs -get output output

檢視之:

Linux 檢視 $ cat output/*
hdfs 檢視   $ bin/hdfs dfs -cat output/*

3.設定hdfs的三個程序以hadoop002啟動,因為secondery namenode是預設0.0.0.0啟動的

 這些檔案可修改相應引數
NN: core-site.xml  fs.defaultFS引數
DN: slaves
SNN: hdfs-default.xml

snn裡新增

<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>hadoop002:50090</value>
</property>
<property>
	<name>dfs.namenode.secondary.https-address</name>
	<value>hadoop002:50091</value>
</property>

然後重啟咯

4.關於命令jps

首先jps是java的

[[email protected] hadoop-2.6.0-cdh5.7.0]$ which jps
/usr/java/jdk1.7.0_80/bin/jps

當其他使用者檢視hadoop而沒有許可權的時候,jps會報不可用

[[email protected] ~]# jps
16188 -- process information unavailable
16607 Jps
16379 -- process information unavailable
16094 -- process information unavailable
[[email protected] ~]# 

然而並不是真不可用,只不過許可權不夠嘛,被殺了才會真不可用

[[email protected] ~]# jps
16188 -- process information unavailable
16379 -- process information unavailable
16702 Jps
16094 -- process information unavailable
[[email protected] ~]# 
[[email protected] ~]# ps -ef|grep 16094   
root     16722 16590  0 22:19 pts/4    00:00:00 grep 16094   
 少了一大串的內容
 [[email protected] ~]# 

所以遇上這種不可用,步驟如下
1.找到不可用的程序號,jps
2.ps -ef|grep pid 看看是否存在
3.存在的話,第二部會返回是哪個使用者執行這個程序
su - 使用者,進去檢視
4.不存在的話,清空殘留資訊
rm -f /tmp/hsperfdata_${user}/pid檔案
hsperfdata_hadoop
5.如果存在卻刪了,程序雖然不會掛,但是jps命令不會顯示,但所依賴的指令碼都會有問題。

5.SSH命令

這是個遠端連線的命令,在不同的使用者家目錄下都有.ssh

直接ssh ip 會以當前使用者的ip去連線這個ip
這是以root使用者去連
ssh [email protected] -p 22
ssh預設埠號是22
返回日期
ssh [email protected] date

rz,sz是win和linux傳輸那麼
兩個Linux系統怎樣傳輸呢?
hadoop000–>hadoop002

[[email protected] ~]$ scp test.log  [email protected]:/tmp/

將當前的Linux系統檔案 scp到 遠端的機器上

hadoop000<–hadoop002

[[email protected] ~]$ scp test.log  [email protected]:/tmp/

但是 hadoop002屬於生產機器 你不可登陸,後面的是本機目錄

scp [email protected]:/tmp/test.log /tmp/rz.log

要輸入密碼但是: 生產上 絕對不可能給你密碼

6.SSH多臺機器互信關係

1.先把多臺機器家目錄下的.ssh給刪掉
2.多臺機器生成key ssh-keygen
3.都進入.ssh問件 , cd .ssh ,上面那個命令會生成一個私鑰和公鑰,信任關係就是公鑰(.pub)相互作用
4.選擇一臺機器作為主節點, cat id_rsa.pub >> authorized_keys
5.然後在該機器上 scp [email protected]其他機器ip:/root/.ssh/id_rsa.pub id_rsa.pub(重新命名一下)
6.然後 cat id_rsa.pub >> authorized_keys,然後在authorized_keys能看到幾臺機器,但是沒有幾臺機器的ip
7.設定ip , vi /etc/hosts,加入其他機器的ip和機器名字的資訊
8.chmod 600 authorized_keys
9.把主機的authorized_keys拷到其他機器上 scp authorized_keys [email protected]其他機器ip:/root/.ssh/
9.對每臺機器包括自己ssh hadoopxxx date 兩次,讓其無密碼訪問

有詳細教程:
http://blog.itpub.net/30089851/viewspace-1992210/