$ 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 中检查缘由并对症下药。