1準備工作
Jdk-6u16-linux-i586-rpm.bin
hadoop-1.2.1.tar.gz
fedora 18
VMware Workstation 9
2安裝JDK
2.1卸載fedora 18自帶的openjdk(因爲其javac命令不能用)#yum –y remove java 全名
2.2安裝Jdk-6u16-linux-i586-rpm.bin
#chmod +x jdk-6u16-linux-i586-rpm.bin
#./jdk-6u16-linux-i586-rpm.bin
然後ctrl+C翻頁 選擇yes
2.3配置/etc/profile(設置環境變量)
在done的後面、unset i的前面輸入
#set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_16
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
2.4測試是否成功
#java –version
3.安裝ssh
3.1 查看Fedora是否自帶有openssh
如果出現
則說明linux自帶有openssh
3.2修改配置文件
#vi /etc/ssh/sshd_config
#Port 22 監聽的端口號,默認是22,可以自定義。
#Protocol 2 支持的協議,默認就好,不用修改
#PermitRootLogin yes 是否允許root直接登錄,最好設置爲no
#MMaxAuthTries 6 最大登錄數,默認是6,建議設置爲3,防止別人密碼窮舉。建議修改的#PermitRootLogin yes #MMaxAuthTries 6如下圖修改
3.3修改完配置後,重啓ssh服務。
systemctl restart sshd.service
查看systemctl status sshd.service
3.4設置系統啓動時開啓服務
# systemctl enable sshd.service
3.5建立ssh無密碼登錄:
在namenode上面實現無密碼登錄:
#ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回車,完成後會在 ~/.ssh/ 生成兩個文件: id_dsa 和 id_dsa.pub 。這兩個是成對出現,類似鑰匙和鎖。
再把 id_dsa.pub 追加到授權 key 裏面 ( 當前並沒有 authorized_keys 文件 ) :
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
完成後可以實現無密碼錄本機: #ssh localhost
4、安裝hadoop
4.1下載hadoop-1.2.1.tar.gz,
解壓:tar -zvxf hadoop-1.2.1.tar.gz
4.2配置hadoop:
hadoop 的主要配置都在 hadoop-1.2.1 /conf 下。
(1) 在 conf/hadoop-env.sh 中配置 Java 環境
export JAVA_HOME=jdk的路徑
(2) 配置 conf/core-site.xml, conf/hdfs-site.xml 及 conf/mapred-site.xml
core-site.xml的配置
<configuration>
<property>
<name> fs.default.name </name>
<value> hdfs://localhost:9000 </value>
</property>
</configuration>
hdfs-site.xml的配置 ( replication 默認爲 3 ,如果不修改, datanode 少於三臺就會報錯)
<configuration>
<property>
<name> dfs.replication </name>
<value> 1 </value>
</property>
</configuration>
mapred-site.xml的配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value> localhost:9001 </value>
</property>
</configuration>
4.3 配置完成後
(1)格式化文件系統 #bin/hadoop namenode – format
(2)啓動hadoop:bin/start-all.sh
(3)用jps命令查看進程
到此配置完畢。
5在hadoop上運行wordcount任務
查看輸出結果
bin/hadoop dfs –cat output2/*