Hadoop学习

文章目录

软件环境准备

hadoop-1.2.1
下载链接
jdk
下载链接

配置hadoop

使用vi /etc/profile命令编辑profile文件

1
2
3
HADOOP_HOME=/usr/local/hadoop-1.2.1/
JAVA_HOME=/usr/local/java/jdk1.7.0_80
PATH=$JAVA_HOME/bin:$HADOOP_INSTALL/bin:$PATH

然后保存,退出,使用source /etc/profile使刚刚的更改立即生效。

ssh免密码登录

1
2
ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

测试ssh配置是否成功:

1
ssh localhost

配置Hadoop环境

/usr/local/hadoop-1.2.1/conf这个目录,然后可以看到haddoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml这四个文件以及需要在完全分布模式配置的slaves和masters文件

配置hadoop-env.sh

首先我们用vi hadoop-env.sh命令编辑打开hadoop-env.sh文件,找到JAVA_HOME关键字所在的行,把前面的#号去掉,然后填写实际的JAVA_HOME地址:

1
export  JAVA_HOME=/usr/local/java/jdk1.7.0_80

配置core-site.xml

1
2
3
4
5
6
7
8
9
10
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</propety>
<!--s.default.name:用来配置namenode,指定HDFS文件系统的URL,通过该URL我们可以访问文件系统的内容,也可以把localhost换成本机IP地址;如果是完全分布模式,则必须把localhost改为实际namenode机器的IP地址;如果不写端口,则使用默认端口8020。 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/tmp/hadoop_tmp</value>
</property>
<!-- hadoop.tmp.dir:Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。该目录必须预先手工创建。-->

配置hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<property>
<name>dfs.data.dir</name>
<value>/data/appdata/hadoopdata</value>
</property>
<!--配置HDFS存储目录,数据存放目录,用于datanode存放数据-->
<property>
<name>dfs.name.dir</name>
<value>/data/appdata/hadoopname</value>
</property>
<!--用来存储namenode的文件系统元数据,包括编辑日志和文件系统映像,如果更换地址的话,则需要重新使用hadoop namenode –format命令格式化namenode-->
<property>
<name>dfs.replication</name>
<value>1</value>
</proerty>
<!--用来设置文件系统冗余备份数量,因为只有一个节点,所有设置为1,系统默认数量为3-->

配置mapred-site.xml

1
2
3
4
5
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<!--该项配置用来配置jobtracker节点,localhost也可以换成本机的IP地址;真实分布模式下注意更改成实际jobtracker机器的IP地址-->

启动hadoop

测试hadoop配置是否成功

1
hadoop version

格式化namenode

1
2
cd /usr/local/hadoop-1.2.1/bin
./hadoop namenode –format 第一次启动时使用,经常使用容易造成datanode不启动

启动hadoop进程

1
2
cd /usr/local/hadoop-1.2.1/bin
./start-all.sh

我们可以通过java的jps命令来查看进程是否启动成功,从下图可以看到,我们已经成功启动SecondaryNamenode,JobTracker,NameNode,DataNode,TraskTracker五个进程,而刚好这五个进程是hadoop所需要的。如果有一个进程没有启动成功,就表示整个集群没有正常工作,我们可以进入/data/software/hadoop/hadoop-1.2.1/libexec/../logs/目录下查看失败日记。

关闭hadoop进程

1
2
cd /usr/local/hadoop-1.2.1/bin
./stop-all.sh