$ cd /usr/local/hadoop/etc/hadoop
$ vim core-site.xml
將下面的內容複製到 <configuration> 標籤內java
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>
$ vim yarn-site.xmlnode
將下面的內容複製到 <configuration> 標籤內apache
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
$ mv mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xmlvim
將下面的內容複製到 <configuration> 標籤內app
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
$ mkdir -p ~/mydata/hdfs/namenode
$ mkdir -p ~/mydata/hdfs/datanode
$ vim hdfs-site.xmlcurl
將下面的內容複製到 <configuration> 標籤內maven
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hduser/mydata/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hduser/mydata/hdfs/datanode</value> </property>
第一次啓動hadoop服務以前,必須執行格式化namenodeoop
$ hdfs namenode -format測試
部分截圖:ui
$ start-dfs.sh && start-yarn.sh
使用jps查看服務
$ jps
若是一切順利,你會看到:
17785 SecondaryNameNode
17436 NameNode
17591 DataNode
18096 NodeManager
17952 ResourceManager
23635 Jps
當執行start-dfs.sh的時候,你可能會看到 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,不用擔憂,其實能夠正常使用,咱們會在問題解決那一節談到這個問題。
$ cd /usr/local/hadoop
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -write -nrFiles 20 -fileSize 10
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -clean
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 2 5
Cluster status: http://localhost:8088
HDFS status: http://localhost:50070
Secondary NameNode status: http://localhost:50090
這是一個警告,基本不會影響hadoop的使用,可是在以後咱們仍是給予解決這個warning的方法。一般來說,出現這個warning的緣由是你在64位的系統上,可是hadoop的package是爲32位的機器編譯的。在這種狀況下,確認你不要忘記在hadoop-env.sh中加入這幾行:
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
不然你的hadoop不能正常工做。若是你用的系統和hadoop的package相符(32位),這兩行是沒必要要的。
咱們不但願有warning,如何解決?方法是本身從新編譯源代碼。從新編譯其實很簡單:
安裝 maven
$ sudo apt-get install maven
安裝 protobuf-2.5.0 or later
$ curl -# -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
$ tar -xzvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ cd ..
如今並編譯hadoop源代碼,注意編譯以前須要先給源代碼打個補丁
$ wget http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.2.0-src.tar.gz
$ tar -xzvf hadoop-2.2.0-src.tar.gz
$ cd hadoop-2.2.0-src
$ wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
$ patch -p0 < HADOOP-10110.patch
$ mvn package -Pdist,native -DskipTests -Dtar
如今到 hadoop-dist/target/ 目錄下, 你會看到 hadoop-2.2.0.tar.gz or hadoop-2.2.0, 他們就是編譯後的hadoop包。 你可使用本身編譯的包,一樣按照以前的步驟安裝64位的hadoop。若是你已經安裝了32位的hadoop,只須要替換 /usr/local/hadoop/lib/native 目錄,而後將以下兩行從hadoop-env.sh中移除便可:
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
一個經常使用的方法是先刪掉datanode對應的文件夾試試,注意這樣作可能會丟失你的數據。另外一種方法是到 /usr/local/hadoop/logs/hadoop-hduser-datanode-*.log 中檢查緣由並對症下藥。