hadoop的單機配置
准備工作
利用vim /etc/sysconfig/network命令修改主機名稱。
Ssh security shell
遠程登錄
登錄遠程服務器
$ ssh user@host
如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
$ ssh host
提示信息
The authenticity of host 'host (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
說明
這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連接嗎?
所謂"公鑰指紋",是指公鑰長度較長(這里采用RSA算法,長達1024位),很難比對,所以對其進行MD5計算,將它變成一個128位的指紋。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再進行比較,就容易多了。
很自然的一個問題就是,用戶怎么知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在自己的網站上貼出公鑰指紋,以便用戶自行核對。
假定經過風險衡量以后,用戶決定接受這個遠程主機的公鑰。
同意接受遠程主機公鑰
Are you sure you want to continue connecting (yes/no)? yes
系統提示認可
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
輸入密碼
Password: (enter password)
說明
當完成以上幾步以后,就可以登錄到遠程服務器端了。當遠程主機的公鑰被接受以后,它就會被保存在文件$HOME/.ssh/known_hosts之中。下次再連接這台主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。這樣有一個缺點,就是每一次登錄的時候都要輸入密碼,這樣的操作是比較繁瑣的。
公鑰登錄
步驟
1、 機器A發送自己的公鑰到機器B,這個時候機器B有了機器A的公鑰
2、 機器B發送一個隨機的字符串向機器A
3、 機器A利用自己的私鑰把字符串加密
4、 機器A把加密后的字符串再次發送給機器B
5、 機器B利用公鑰解密字符串,如果和原來的一樣,則OK。
實現
1、 生成自己的公鑰和私鑰
$ ssh-keygen
2、 把生成的公鑰copy到遠程機器上
$ ssh-copy-id user@host
3、 遠程主機的authorized_keys文件
在遠程主機上生成了一個authorized_keys文件,保存公鑰的。
4、當再次訪問的時候就不需要輸入密碼了。
jdk安裝
上傳jdk
在/home下創建一個文件夾app
jdk解壓到app下
調用tar –zxvf 文件的目錄 的命令把jdk解壓縮在app目錄下
命令解釋:
tar –zxvf 文件的路徑
f:指定文件的名稱
z:以gz結尾的文件就是用gzip壓縮的結果。與gzip相對的就是gunzip,這個參數的作用就是用來調用gzip。
X:為解開的意思
Z:詳細報告處理文件的信息
轉到jdk的bin目錄下,輸出java命令
[root@localhost bin]# ./java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-server to select the "server" VM
The default VM is server.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
當離開bin這個目錄,輸出java命令
[root@localhost bin]# cd ..
[root@localhost jdk1.7.0_45]# java
bash: java: command not found
[root@localhost jdk1.7.0_45]#
上述的內容很簡單:不識別java這個命令
設置環境變量
export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin
把這兩行配置放入到/etc/profile以后,要做source /etc/profile這樣一個命令。
這樣就設置了環境變量。
Echo命令
[root@localhost /]# echo $JAVA_HOME
/home/app/jdk1.7.0_45/
可以利用該命令看環境變量。
默認的配置文件
在hadoop-hdfs.jar包中,有一個配置文件
Hadoop-default.xml文件
在hadoop-common.jar包中,有一個配置文件
core-default.xml文件
修改hadoop-env.sh
主要是修改java_home的路徑,在hadoop-env.sh的第27行。
把export JAVA_HOME=${JAVA_HOME}修改成具體的路徑
[root@localhost hadoop]# vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}àexport JAVA_HOME=/home/app/jdk1.7.0_45/
[root@localhost hadoop]# source hadoop-env.sh
如果比較難找,利用: set nu命令可以顯示行數
修改core-site.xml
[root@localhost hadoop]# vim core-site.xml
原來的內容:
<configuration>
</configuration>
現在的內容:
<configuration>
<property>
<name>fs.defaultFS</name> namenode的名字
<value>hdfs://zd01:9000</value> namenode的地址
</property>
<property>
<name>hadoop.tmp.dir</name> 文件存儲的名稱
<value>/home/app/hadoop-2.6.0/tmp</value> 文件存儲的地址
</property>
文件存儲路徑
data節點的路徑
name節點的路徑
修改hdfs-site.xml
原來的內容
<configuration>
</configuration>
現在的內容:
<configuration>
<property>
<name>dfs.replication</name> //指的是hdfs的副本的數量,包括自己。
<value>3</value>
</property>
</configuration>
修改mapred-site.xml
說明:在/etc/hadoop的目錄下,只有一個mapred-site.xml.template文件,所以必須改名
[root@localhost hadoop]# mv mapred-site.xml.template mapred-site.xml
在mapred-site.xml文件中
原來的文件
<configuration>
</configuration>
現在的文件
<configuration>
<property> //指明mapreduce運行在yarn上
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
原來的值:
<configuration>
<!-- Site specific YARN configuration properties -->
</configuration>
現在的值:
<configuration>
<property>
//指定resourcemanager的地址
<name>yarn.resourcemanager.hostname</name>
<value>zd01</value>
</property>
<property>
//reduce獲取數據的方式
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改slaves
存放的是datanode節點的名稱
配置hadoop的環境變量
export HADOOP_HOME=/home/app/hadoop-2.6.0/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ANT_HOME/bin
格式化namenode
操作
hdfs namenode –format(Hadoop namenode –format 以前的方式)
在格式化的時候,會有這樣的輸出:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted
作用
1、 清空namenode目錄下的所有的文件,上圖中的tmp/dfs/name下的所有的內容就是要清空的內容
2、 創建一些文件,例如:fsimage,edits文件
啟動hadoop
在/home/app/hadoop-2.6.0/sbin目錄下
[root@localhost sbin]# start-all.sh