且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《深入理解大数据:大数据处理与编程实践》一一2.2 单机和单机伪分布式Hadoop系统安装基本步骤

更新时间:2022-09-30 22:08:40

本节书摘来自华章计算机《深入理解大数据:大数据处理与编程实践》一书中的第2章,第2.2节,作者 主 编:黄宜华(南京大学)副主编:苗凯翔(英特尔公司),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 单机和单机伪分布式Hadoop系统安装基本步骤

默认情况下,Hadoop被配置成一个以非分布式模式运行的独立Java进程,适合程序员在本地做编程和调试工作。Hadoop也可以在单节点上以伪分布式模式运行,用不同的Java进程模拟分布式运行中的各类节点(NameNode、DataNode、JobTracker、TaskTracker和Secondary NameNode)。
2.2.1 安装和配置JDK
Hadoop是以Java语言写成,因而需要在本地计算机上预先安装Java 6或者更新版本。尽管其他Java安装包也声称支持Hadoop,但使用最广的仍然要数Sun的JDK。
在这里,我们采用的版本为jdk-6u23-linux-x64。安装步骤如下:
1)将jdk-6u23-linux-x64-rpm.bin拷贝到所需要的安装目录下,如/usr/jdk。
2)执行./jdk-6u23-linux-x64-rpm.bin安装文件。
3)配置JAVA_HOME以及CLASS_PATH,vi进入/etc/profile,在文件最后加上如下语句:

JAVA_HOME=/usr/java/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

保存退出,执行以下命令使得配置文件生效。

$source /etc/prof?ile

4)执行以下命令查看当前版本配置是否生效。
$java –version
5)查看CLASSPATH有无生效,可编写HelloWorld类至当前目录,执行以下命令分别进行编译和执行,查看结果是否正确。

$javac HelloWorld.java
$java HelloWorld

2.2.2 创建Hadoop用户
为Hadoop创建一个专门的用户,例如hadoop:hadoop-user(用户名:用户组)。可以在安装系统的时候就创建,也可以在安装好之后用如下命令创建:

#groupadd hadoop-user
#useradd –g hadoop-user hadoop
#passwd hadoop

2.2.3 下载安装Hadoop
从Apache Hadoop发布页面(http://hadoop.apache.org/coases.html)下载一个稳定的发布包(通常被打包成一个gzipped tar文件),再解压缩到本地文件系统中。在这里采用的Hadoop版本是Hadoop-1.2.1。
$tar –xzvf hadoop-1.2.1.tar.gz
2.2.4 配置SSH
为了保证在远程管理Hadoop节点以及Hadoop节点间用户共享访问时的安全性,Hadoop系统需要配置和使用SSH(安全外壳协议)。在单机模式下无需任何守护进程,因此不需要进行SSH设置,但是在单机伪分布模式和集群分布模式下需要进行SSH设置。
Hadoop需要通过SSH来启动Slave列表中各台主机的守护进程。但由于SSH需要用户密码登录,因此为了在系统运行中完成节点的免密码登录和访问,需要将SSH配置成免密码登录方式。
配置SSH的主要工作是创建一个认证文件,使得用户以public key方式登录,而不用手工输入密码。配置基本配置步骤如下。
1)生成密钥对,执行如下命令:
$ssh-keygen –t rsa
2)然后一直按键,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa文件中,如图2-1所示。
《深入理解大数据:大数据处理与编程实践》一一2.2 单机和单机伪分布式Hadoop系统安装基本步骤

图2-1 将密钥对保存在.ssh/id.rsa文件中
3)进入.ssh目录,执行如下命令:

$cp id_rsa.pub authorized_keys

4)此后执行如下命令:

$ssh localhost

5)测试一下能否登录,是否可实现用SSH连接并且不需要输入密码。
2.2.5 配置Hadoop环境
切换到Hadoop的安装路径找到hadoop-1.2.1下的conf/hadoop-env.sh文件夹,使用vi或文本编辑器打开,添加如下语句:
$export JAVA_HOME=/usr/java/jdk1.6.0
Hadoop-1.2.1的配置文件是conf/core-site.xml、conf/hdfs-site.xml和conf/mapred-site.xml。其中core-site.xml是全局配置文件,hdfs-site.xml是HDFS的配置文件,mapred-site.xml是MapReduce的配置文件。以下列出几个示例配置文件。
core-site.xml的文档内容如下所示:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="conf?iguration.xsl"?>
<!-- Put site-specif?ic property overrides in this f?ile. -->
<conf?iguration>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs:// localhost:9000</value>
<!—注意这里要填写自己的IP-->
</property>
</conf?iguration>
hdfs-site.xml的文档内容如下所示:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="conf?iguration.xsl"?>
<!-- Put site-specif?ic property overrides in this f?ile. -->
<conf?iguration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop_dir/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>f?ile:// /home/hadoop/hadoop_dir/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</conf?iguration>
mapred-site.xml的文档内容如下所示:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="conf?iguration.xsl"?>
<!-- Put site-specif?ic property overrides in this f?ile. -->
<conf?iguration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
<!—注意这里要填写自己的IP-->
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>/home/hadoop/hadoop_dir/mapred/local</value>
</property>
<property>
<name>mapreduce.jobtracker.system.dir</name>
<value>/home/hadoop/hadoop_dir/mapred/system</value>
</property>
</conf?iguration>

2.2.6 Hadoop的运行
1.?格式化HDFS文件系统
在初次安装和使用Hadoop之前,需要格式化分布式文件系统HDFS。使用如下命令格式化分布式文件系统:

$bin/hadoop namenode –format

2.启动Hadoop环境
启动Hadoop守护进程,命令如下:

$bin/start-all.sh

成功执行后将在本机上启动NameNode、DataNode、JobTracker、TaskTracker和Secondary NameNode五个新的Java进程。
3.?停止Hadoop守护进程
最后需要停止Hadoop守护进程,命令如下:

$bin/stop-all.sh

2.2.7 运行测试程序
下面用一个程序测试能否运行任务,示例程序是一个Hadoop自带的PI值的计算。第一个参数是指要运行的map的次数,第二个参数是指每个map任务取样的个数。

$hadoop jar $HADOOP_HOME/hadoop-examples-1.2.1.jar \
pi2 5

2.2.8 查看集群状态
当Hadoop启动之后,可以用jps命令查看一下它是不是正常启动。

$jps
4706 JobTracker
4582 SecondaryNameNode
4278 NameNode
4413 DataNode
4853 TaskTracker
4889 Jps

如果显示以上的信息,则表示Hadoop已正常启动。