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

简介:

本节书摘来自华章计算机《深入理解大数据:大数据处理与编程实践》一书中的第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所示。
image

图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已正常启动。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
773 79
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
1002 4
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
762 2
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
685 1
|
SQL 分布式计算 大数据
大数据平台的毕业设计01:Hadoop与离线分析
大数据平台的毕业设计01:Hadoop与离线分析
758 0
|
SQL 分布式计算 大数据
大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
597 2
|
存储 消息中间件 druid
大数据-150 Apache Druid 安装部署 单机启动 系统架构
大数据-150 Apache Druid 安装部署 单机启动 系统架构
294 1
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
1175 6
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
539 2