环境如下:
Ubuntu 12.04.2 LTS
hadoop-1.0.3
1、 安装jdk
sudo apt-get install openjdk-7-jdk
2、 环境变量配置
vi /etc/hostname 设置
namenode: hadoop-namenode
datanode: hadoop-datanode1
以此类推
vi /etc/profile ,添加
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_HOME=/home/sfuser/hadoop
export PATH=$PATH:/home/sfuser/hadoop/bin:/home/sfuser/hbase/bin:/home/sfuser/flume/bin:/home/sfuser/lib/grails-2.1.0/bin:/usr/lib/jvm/java-7-openjdk
3、 vi /etc/hosts ,设置并复制到每一台机器
127.0.0.1 localhost
10.6.115.8 hadoop-secondnamenode
10.6.115.9 hadoop-namenode
10.6.115.10 hadoop-datanode1
10.6.115.11 hadoop-datanode2
10.6.115.12 hadoop-datanode3
10.6.115.13 hadoop-datanode4
5、 在master机器安装hadoop,我的路径是: /home/sfuser/hadoop
6、 修改hadoop的配置文件
编辑conf/hadoop-env.sh ,请自行忽略我这里hbase的部分.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_HOME=/home/sfuser/hbase
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase-0.94.1.jar:$HBASE_HOME/lib/zookeeper-3.4.3.jar:$HBASE_HOME/lib/protobuf-java-2.4.0a.jar:$HBASE_HOME/lib/guava-11.0.2.jar:$HBASE_HOME/lib:$HBASE_HOME/conf
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"
export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"
export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"
export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"
export HADOOP_PID_DIR=/tmp/
编辑conf/mapred-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>mapred.job.tracker</name>
<value>hadoop-namenode:54311</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
</configuration>
编辑conf/hdfs-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>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>65535</value>
</property>
</configuration>
编辑conf/core-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://hadoop-namenode:54310</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/sfuser/hadoop/dir</value>
</property>
</configuration>
编辑conf/masters设置
hadoop-namenode
编辑conf/slaves设置
hadoop-datanode1
hadoop-datanode2
hadoop-datanode3
hadoop-datanode4
7、 把master的hadoop拷贝到slave
scp -r hadoop hadoop-datanode1:/home/sfuser/hadoop
scp -r hadoop hadoop-datanode2:/home/sfuser/hadoop
scp -r hadoop hadoop-datanode3:/home/sfuser/hadoop
scp -r hadoop hadoop-datanode4:/home/sfuser/hadoop
8、 master上格式化HDFS
hadoop namenode –format
9、 启动节点
在master上执行:
hadoop/bin/start-all.sh
在master上执行jps命令,显示如下
14745 Jps
11214 SecondaryNameNode
10903 NameNode
11316 JobTracker
在slave上执行jps命令,显示如下
29543 Jps
18606 TaskTracker
18382 DataNode
配置结束后,可以查看http://hadoop-namenode:50070 显示节点信息
http://hadoop-namenode:50030 显示任务信息
10、 关闭各节点
在master上执行:
hadoop/bin/stop-all.sh
我常遇到的问题:
1、Namenode in safe mode
解决方法
hadoop dfsadmin -safemode leave
2、无法启动datanode的情况
查看current version是否一致,改成一致即可。
新做的环境,可以直接删除各节点< hadoop.tmp.dir >下的文件,再格式化namenode即可
通常遇到ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 的问题,也可能是因为这个版本问题