对于Hadoop来说,在HDFS看来,节点分为Namenode 和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和 Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。在此,所有的节点我都部署在一台机器上的。
1、 安装:解压缩文件包tar xfzv file.tgz
2、 配置:进入conf目录,修改配置文件。
1) hadoop-env.sh中的 JAVA_HOME【export JAVA_HOME=/usr/lib/jvm/java】
2) hadoop-site.xml见附录。hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录下的hadoop-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值,可以根据自己的实际需要来进行定制。
3、 bin/hadoop namenode -format 格式化namenode
4、 bin/start-all.sh 启动所有守护进程
bin/stop-all.sh 停止所有守护进程
start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
stop-mapred.sh 停止Map/Reduce守护
start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode
stop-dfs.sh 停止DFS守护
5、 bin/hadoop dfs -mkdir testdir 建立目录,这个目录并不是实际目录
6、 bin/hadoop dfs -put conf/hadoop-default.xml testdir 复制文件
有时,当你申请到一个HOD集群后马上尝试上传文件到HDFS时,DFSClient会警告NotReplicatedYetException。通常会有一个如下报错信息。
org.apache.hadoop.ipc.RemoteException: java.io.IOException File /root/testdir/hadoop-default.xml could only be replicated to 0 nodes, instead of 1
不幸的是我也遇到了这个报错,google了很久才找到一个解决方案:当你向一个DataNodes正在和NameNode联络的集群上传文件的时候,这种现象就会发生。在上传新文件到HDFS之前多等待一段时间就可以解决这个问题,因为这使得足够多的DataNode启动并且联络上了NameNode。果然,很有效!
7、 bin/hadoop dfs -ls testdir 查看现有文件
8、 bin/hadoop dfs -cat testdir/hadoop-default.xml 查看文件内容
9、 bin/hadoop jar hadoop-0.18.3-examples.jar wordcount testdir test-out 执行分布式统计词
10、bin/hadoop dfs -ls test-out bin/hadoop dfs -cat /user/root/test-out/part-00000 查看统计结果
hadoop单机配置:
1、修改环境:hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.6.0_14
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}" 配置Namenode时,使其能够并行回收垃圾(parallelGC)
2、
修改hadoop-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://test10:9000/</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>test10:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/xuluni/hadoop-0.18.3/filesystem/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/xuluni/hadoop-0.18.3/filesystem/data</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/xuluni/hadoop-0.18.3/tmp</value>
</property>
</configuration>