❶ linux怎麼部署hadoop
在Linux上安裝Hadoop之前,需要先安裝兩個程序:
1. JDK 1.6或更高版本;
2. SSH(安全外殼協議),推薦安裝OpenSSH。
下面簡述一下安裝這兩個程序的原因:
1. Hadoop是用java開發的,Hadoop的編譯及MapRece的運行都需要使用JDK。
2. Hadoop需要通過SSH來啟動salve列表中各台主機的守護進程,因此SSH也是必須安裝的,即使是安裝偽分布式版本(因為Hadoop並沒有區分集群式和偽分布式)。對於偽分布式,Hadoop會採用與集群相同的處理方式,即依次序啟動文件conf/slaves中記載的主機上的進程,只不過偽分布式中salve為localhost(即為自身),所以對於偽分布式Hadoop,SSH一樣是必須的。
一、安裝JDK 1.6
安裝JDK的過程很簡單,下面以Ubuntu為例。
(1)下載和安裝JDK
確保可以連接到互聯網,輸入命令:
sudo apt-get install sun-java6-jdk
輸入密碼,確認,然後就可以安裝JDK了。
這里先解釋一下sudo與apt這兩個命令,sudo這個命令允許普通用戶執行某些或全部需要root許可權命令,它提供了詳盡的日誌,可以記錄下每個用戶使用這個命令做了些什麼操作;同時sudo也提供了靈活的管理方式,可以限制用戶使用命令。sudo的配置文件為/etc/sudoers。
apt的全稱為the Advanced Packaging Tool,是Debian計劃的一部分,是Ubuntu的軟體包管理軟體,通過apt安裝軟體無須考慮軟體的依賴關系,可以直接安裝所需要的軟體,apt會自動下載有依賴關系的包,並按順序安裝,在Ubuntu中安裝有apt的一個圖形化界面程序synaptic(中文譯名為「新立得」),大家如果有興趣也可以使用這個程序來安裝所需要的軟體。(如果大家想了解更多,可以查看一下關於Debian計劃的資料。)
(2)配置環境變數
輸入命令:
sudo gedit /etc/profile
輸入密碼,打開profile文件。
在文件的最下面輸入如下內容:
#set Java Environment
export JAVA_HOME= (你的JDK安裝位置,一般為/usr/lib/jvm/java-6-sun)
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
export PATH="$JAVA_HOME/:$PATH"
這一步的意義是配置環境變數,使你的系統可以找到JDK。
(3)驗證JDK是否安裝成功
輸入命令:
java -version
查看信息:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
❷ 如何配置hadoop偽分布式配置
0.關閉防火牆
service iptables start;#立即開啟防火牆,但是重啟後失效。
service iptables stop;#立即關閉防火牆,但是重啟後失效。
重啟後生效
chkconfig iptables on;#開啟防火牆,重啟後生效
chkconfig iptables off;#關閉防火牆,重啟後生效
1.配置主機名
!!!!!注意安裝hadoop的集群主機名不能有下劃線!!不然會找不到主機!無法啟動!
配置主機名
$vi /etc/sysconfig/network
$source /etc/sysconfig/network
例如:
NETWORKING=yes
HOSTNAME=hadoop01
2.配置Hosts
vi /etc/hosts
填入以下內容
127.0.0.1 hadoop01
其他主機和ip對應信息。。。
3.配置面密碼互通
生成自己的公鑰和私鑰,生成的公私鑰將自動存放在/root/.ssh目錄下。
$ ssh-keygen
把生成的公鑰到遠程機器上
$ ssh--id [user]@[host]
此時在遠程主機的/root/.ssh/authorized_keys文件中保存了公鑰,在known_hosts中保存了已知主機信息,當再次訪問的時候就不需要輸入密碼了。
$ ssh [host]
通過此命令遠程連接,檢驗是否可以不需密碼連接
4.安裝JDK
通過fz將jdk安裝包上傳
解壓安裝包
tar -zxvf [jdk安裝包位置]
配置環境變數
修改profile -- 這個文件是每個用戶登錄時都會運行的環境變數設置,當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。
vim /etc/profile
在文件行尾加入配置後保存退出
export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin
重新載入profile使配置生效
source /etc/profile
環境變數配置完成,測試環境變數是否生效
echo $JAVA_HOME
java -version
5.安裝hadoop
通過fz將hadoop安裝包上傳到linux
解壓安裝包
tar -zxvf [hadoop安裝包位置]
6.配置hadoop
(1)修改 hadoop-env.sh
通過vim打開
vim [hadoop]/etc/hadoop/hadoop-env.sh
主要是修改java_home的路徑
在hadoop-env.sh的第27行,把export JAVA_HOME=${JAVA_HOME}修改成具體的路徑
重新載入使修改生效
source hadoop-env.sh
(2)修改 core-site.xml
通過vim打開
vim [hadoop]/etc/hadoop/core-site.xml
增加namenode配置、文件存儲位置配置
<configuration>
<property>
<!--用來指定hdfs的老大,namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--用來指定hadoop運行時產生文件的存放目錄-->
<name>hadoop.tmp.dir</name>
<value>/home/park/work/hadoop-2.5.2/tmp</value>
</property>
</configuration>
(3)修改 hdfs-site.xml
通過vim打開
vim [hadoop]/etc/hadoop/hdfs-site.xml
配置包括自身在內的備份副本數量。
<configuration>
<property>
<!--指定hdfs保存數據副本的數量,包括自己,默認為3-->
<!--偽分布式模式,此值必須為1-->
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
(4)修改 mapred-site.xml
說明:在/etc/hadoop的目錄下,只有一個mapred-site.xml.template文件,復制一個
cp mapred-site.xml.template mapred-site.xml
通過vim打開
vim [hadoop]/etc/hadoop/mapred-site.xml
配置maprece運行在yarn上
<configuration>
<property>
<!--指定maprece運行在yarn上-->
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)修改 yarn-site.xml
通過vim打開
vim [hadoop]/etc/hadoop/yarn-site.xml
配置
<configuration>
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager獲取數據的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
</configuration>
(6)修改 slaves
(7)配置hadoop的環境變數
vim /etc/profile
export HADOOP_HOME=/home/park/work/hadoop-2.5.2/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
重新載入profile使配置生效
source /etc/profile
環境變數配置完成,測試環境變數是否生效
echo $HADOOP_HOME
(8)重啟linux
$reboot
????為什麼需要重啟配置文件才起作用?原因不明????
(8)格式化namenode
進入 hadoop/bin 輸入命令格式化namenode
hadoop namenode -format(hdfs namenode -format 以前的方式)
在格式化的時候,會有這樣的輸出:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted
7.啟動hadoop
在/home/app/hadoop-2.6.0/sbin目錄下
$start-all.sh
8.關閉hadoop
在/home/app/hadoop-2.6.0/sbin目錄下
$stop-all.sh
9.hdfs命令
hadoop fs -mkdir /user/trunk
hadoop fs -ls /user
hadoop fs -lsr /user (遞歸的)
hadoop fs -put test.txt /user/trunk
hadoop fs -put test.txt . (復制到hdfs當前目錄下,首先要創建當前目錄)
hadoop fs -get /user/trunk/test.txt . (復制到本地當前目錄下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最後1000位元組)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的幫助文檔)
10.通過瀏覽器訪問hadoop管理頁面
http://[server_ip]:50070
**如果訪問不了有可能是伺服器50070埠被關閉了。通過如下方式打開50070埠:
service iptables status #查詢防火牆狀態
service iptables start #開啟防火牆
iptables -I INPUT -p tcp --dport 80 -j ACCEPT #開通特定埠
iptables -I INPUT -p tcp --dport 80 -j DROP #關閉特定埠
service iptables save #保存配置
service iptables restart #重啟防火牆