1. 程式人生 > >centos6.5配置Hadoop環境,執行wordcount例子

centos6.5配置Hadoop環境,執行wordcount例子

  • 安裝vmware12centos6.5(還是6.5好,穩定流暢,7介面好看但是虛擬機器裡面卡死了),刪除自帶openjdk下載安裝jdk1.7
  • 配置環境變數 vim /etc/profile->最後加上下面這段

export JAVA_HOME=/usr/java/jdk1.7.0_79
exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

執行source/etc/profile使之生效

  • 安裝hadoop,下載下載 hadoop-2.x.y.tar.gz這樣型別的,
    64位電腦記得下載64位的
  • 執行tar -zxf ~/下載/hadoop-2.6.0.tar.gz -C /usr/local 釋放hadoop到本地,修改一下名字mv hadoop-2.6.0 hadoop
  • 配置環境變數,/etc/profile下面加上這兩行

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

  • 修改/usr/local/hadoop/etc/hadoop/下的 core-site.xml和hdfs-site.xml

core-site.xml:

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>file:/usr/local/hadoop/tmp</value>

<description>Abase for other temporary directories.</description>

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

hdfs-site.xml:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/usr/local/hadoop/tmp/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/usr/local/hadoop/tmp/dfs/data</value>

</property>

</configuration>

  • 執行./bin/hdfs namenode -format進行 NameNode的格式化

成功的話,會看到successfully formattedExitting with status 0的提示,若為Exitting with status 1則是出錯。

  • 接著開啟 NaneNode 和 DataNode 守護程序:執行sbin/start-dfs.sh  開啟守護程序
  • 2.x版本之後上傳命令不一樣了:hadoop fs -mkdir input改為hdfs dfs -mkdir -p
  • input目錄建立完成之後,開始上傳本地目錄:

上傳失敗顯示:mkdir: Cannot create directory /input. Name node is insafe mode.

通過執行bin/hadoop dfsadmin -safemode leave 來關閉safe mode

  • 上傳檔案報錯:WARN hdfs.DFSClient: DataStreamer Exception,原因是防火牆未關閉,執行service iptables stop關閉防火牆
  • 若要停止hadoop程序,./sbin/stop_all.sh(注意:要先啟動namenode然後再啟動其他,否則也會報上面的錯)
  • hadoop fs -mkdir /input建立input資料夾
  • hadoop fs -put 檔案 /input(如:hadoop fs -put 1 /input是將當前目錄的檔案1上傳至hdfs中的/input目錄下)
  • hadoop jar hadoop-mapreduce-examples-2.5.1.jar wordcount /input/1 /input/output/1  執行wordcount程式
  • hadoop fs -cat /input/output/1檢視生成的檔案