Hadoop伪分布式与集群式安装配置

本文详细介绍了Hadoop伪分布及集群模式的部署步骤,包括环境配置、SSH无密码验证配置、JDK配置、Hadoop配置等关键环节,并提供了常见问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://www.cnblogs.com/yedezhanghao/archive/2012/07/29/2614182.html

配置前的说明

部署伪分布式与集群式Hadoop的绝大部分操作都是一样的,细节上区别在于集群式是在两台机子上部署的,两台机子都要执行下列操作,而伪分布式都是在一台机子上操作,以下全部操作如没有特别说明,则伪分布式操作与集群式操作等同。

环境说明

伪分布式Hadoop

l  本次hadoop配置的为伪分布模式,即在一个机子上作为namenode,又作为datanode。

l  操作系统:CentOS5.5

l  JDK:1.6.0_26

l  Hadoop:hadoop-0.21.0

集群分布式Hadoop

l  本次hadoop配置的为集群分布模式,即在一个机子上作为namenode,另一台机子作为datanode。

l  操作系统:CentOS5.5

l  JDK:1.6.0_26

l  Hadoop:hadoop-0.21.0

l  网络配置:

网络配置                                                      

查看主机名

使用下面命令进行查看主机名,若要更改,请查看下一步操作。

hostname

修改主机名

第一步,查看主机IP地址。

用下面命令即可查看,本机IP为192.168.1.101(以下操作请使用root用户方可执行)

ifconfig

第二步,若想更改主机名,则可以通过修改文件“/etc/sysconfig/network”中的HOSTNAME后面的值,即可改成我们想要的名字。

用下面命令进行修改主机名。

nano /etc/sysconfig/network

第三步,修改文件“/etc/hosts”。

使用命令打开后更改为如图所示的样子。将原有的全部注释(前面加#),namenode为第一个,datanode为第二个,因为伪分布式模式是namenode和datanode为同一个的,所以两个都是一样。

nano /etc/hosts

 

集群模式则修改为如图所示。(两个机子修改为一样的,第一个为namenode,第二个datanode)

SSH无密码验证配置                      

关于SSH服务

 

还要安装rsync,执行命令sudo yum install rsync

创建hadoop用户

使用root用户创建hadoop用户,依次执行下列命令即可。(集群模式则每台机器都需要这样操作)

useradd hadoop(新增用户)

passwd hadoop (输入两次密码,但输入期间是无任何字符显示的)

 

生成SSH密钥

注销,切换到用户hadoop下,执行下列命令。

cd /home/hadoop

ssh-keygen -t rsa(一路回车,选择默认的保存路径)

进入.ssh目录:cd .ssh

cp id_rsa.pub authorized_keys

ssh 你的主机名

不需要输入密码即为成功,输入exit退出,若要输入密码,则在.ssh目录下执行命令chmod 600 authorized_keys后即可。

 

上述为伪分布式SSH配置成功,若为集群式还需要下列一个操作方可。

将namenode上的公钥拷贝到datanode,namenode机器在hadoop用户的用户目录下(/home/hadoop)下执行命令ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@(datanode的主机名)。

执行命令SSH datanode的主机名。若不需要密码则为成功。

JDK配置                                                    

下载JDK

使用root用户登录后,执行命令yum install jdk。若找不到,则去官网下载(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u22-oth-JPR@CDS-CDS_Developer

安装JDK

新建目录/usr/java,将源码包jdk-6u22-linux-i586.bin复制到该目录下,执行命令chmod a+x jdk-6u22-linux-i586.bin

执行命令 ./jdk-6u22-linux-i586.bin进行安装。

配置环境变量

修改文件“/etc/profile”来添加环境变量。执行下面命令打开文件。

nano /etc/profile

在文件最后添加下面几行:

export JAVA_HOME=/usr/java/jdk1.6.0_26

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

source /etc/profile使变量生效。

验证安装成功

执行命令java –version可得

 

若不成功则查看环境变量是否设置错误。

Hadoop配置                       

安装hadoop

以下操作若不能执行,则使用visudo(该命令需要root权限)给hadoop用户添加最高权限,发生权限不足时,在每条命令前加sudo即可。

如图所示。该命令使用vi编辑器,若不熟悉操作则按77G后按i键

添加一行hadoop  ALL=(ALL)  ALL后按esc键,输入:wq即可保存退出。

注销,切换到hadoop用户下。新建目录sudo mkdir /usr/local/hadoop

hadoop-0.21.0.tar.gz解压缩到该目录下,在压缩包所在的文件夹下执行sudo tar -xvzf hadoop-0.21.0.tar.gz –C /usr/local/hadoop

配置环境变量

修改/etc/profile文件,在文件最后添加两行。

export HADOOP_HOME=/usr/local/hadoop/hadoop-0.21.0

export PATH=$HADOOP_HOME/bin:$PATH

配置/usr/local/hadoop/hadoop-0.21.0/conf/hadoop-env.sh文件,在文件最后添加JAVA_HOME环境变量,export JAVA_HOME=/usr/java/jdk1.6.0_26/

配置master和slave

两个文件在/usr/local/hadoop/hadoop-0.21.0/conf/下面,

master文件填写

192.168.1.101(namenode的IP)

slave文件填写

192.168.1.101(datanode的IP)

因为是伪分布,所以都一样,且只有一个。

若为集群,则为

master文件填写

192.168.1.147(namenode的IP)

slave文件填写

192.168.1.103(datanode的IP)

 

配置三个xml文件

三个xml文件都是在/usr/local/hadoop/hadoop-0.21.0/conf/

配置core-site.xml

创建文件夹mkdir /usr/hadoop/hadoop-0.21.0/tmp

<configuration>
 
    <property>
        <name>fs.default.name</name>
        <value>hdfs://yeweipeng(你的master机器名):9000</value>
 
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
         <value>/usr/hadoop/hadoop-0.21.0/tmp</value>
    </property>

</configuration>

 

配置 hdfs-site.xml

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1
datanode的数目)</value>
     </property>

</configuration>

配置 mapred-site.xml

<configuration>
 
    <property>
        <name>mapred.job.tracker</name>
        <value>yeweipeng(你的master机器名):9001</value>
 
    </property>
</configuration>

启动和测试Hadoop                     

准备工作

使用root权限关闭防火墙,执行/etc/init.d/iptables stop,运行命令/etc/init.d/iptables status查看防火墙状态。

使用hadoop用户,将目录切换到/usr/local/hadoop/hadoop-0.21.0/bin下,格式化目录节点,hadoop namenode –format。

集群模式,上述两个操作只需要namenode机器操作,datanode则不需要。

启动hadoop

在/usr/local/hadoop/hadoop-0.21.0/bin下执行start-all.sh启动hadoop。

用jps查看进程,如图所示有六个进程则为正确(伪分布式)

 

若为集群则在namenode机器上有4个进程。分别是JobTracker,NameNode,Jps,SecondaryNameNode。而datanode有3个,分别是TaskTracker,DataNode,Jps。

网页查看集群

打开http://yeweipeng(主机名):50070查看节点状况 

打开http://yeweipeng(主机名):50030查看job状况  

 

测试

创建目录haoop fs -mkdir test

 

上传haoop fs -put 你要上传的目录

下载haoop fs -get 云端的目录 本地目录

配置中出现的错误                 

问题:启动成功后,发现在master查看live nodes为0

解决方案如下:

将文件/etc/hosts内原有的文件内容注释掉,添加namenode和datanode的IP地址与主机名。

问题:JAVA_HOME is not set

解决方案如下:

配置/conf/hadoop-env.sh文件时,只是修改了JAVA_HOME的值,并没有将前面的注释号#删除掉,所以导致此种问题。

问题:启动hadoop后,执行jps命令只有一个jps进程

解决方案如下:

只有一个进程的原因在于三个xml文件,master,slave的设置错误。

1.       在配置过程的xml文件我们将主机名都写为master导致错误,则将其改为namenode的主机名方可。

2.       master上只能有namenode的IP地址,不得有datanode的地址。同理,slave上只能有datanode的IP地址,不得有namenode的。

问题:伪分布式配置SSH后,无论如何都需要输入密码

解决方案如下:

更改authorized_keys的权限为600 

chmod 600 authorized_keys

 

参考资料                                          

http://blog.youkuaiyun.com/hyclq/article/details/6095904

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

http://blog.youkuaiyun.com/zhaogezhuoyuezhao/article/details/7328313

http://teleyic.iteye.com/blog/1154086

<think>好的,我现在需要回答用户关于在Hadoop伪分布式环境下安装Spark的问题。首先,我得回忆一下HadoopSpark的关系,以及伪分布式环境的特点。Hadoop伪分布式意味着Hadoop在单个节点上运行,但模拟分布式环境,各个守护进程如NameNode、DataNode等分开运行。Spark可以在此环境下以Local模式或Standalone模式运行。 接下来,我得整理安装步骤。根据用户提供的引用内容,有几个关键步骤:安装JDK、配置SSH免密登录、安装Hadoop伪分布式、下载并解压Spark、配置环境变量、修改Spark配置文件(如spark-env.sh)、启动HadoopSpark服务,最后验证安装。需要注意权限问题,比如用户是否需要sudo权限,以及配置文件中的路径是否正确。 然后,我要检查引用中的具体命令,比如配置spark-env.sh时需要设置JAVA_HOME、SPARK_MASTER_IP、HADOOP_CONF_DIR等。引用[1]提到导出这些变量,而引用[2]提到了拷贝模板文件。同时,引用[3]中的示例命令用于验证Spark是否安装成功,比如运行SparkPi例子。此外,用户权限设置(如引用[4]中的sudo权限)也是需要注意的地方。 需要确保步骤逻辑正确,例如先安装Hadoop伪分布式,再安装Spark。配置Spark时,必须指向正确的Hadoop配置目录,否则可能无法正确集成。启动顺序应该是先启动Hadoop,再启动Spark,否则可能出现资源访问问题。 可能遇到的问题包括路径错误、权限不足、端口冲突等。例如,JAVA_HOME的路径是否正确,Hadoop配置目录是否存在,Spark的启动脚本是否有执行权限。此外,用户提到的启动spark-shell时需要确保Hadoop服务已经运行,否则可能无法读取HDFS上的数据。 最后,生成相关问题时需要考虑用户可能进一步的需求,比如性能调优、配置参数、其他组件集成等。例如,如何配置Spark以更好地利用资源,或者如何将Spark连接到Hive等工具。</think>### Hadoop伪分布式环境下安装Spark的步骤指南 #### 1. 前置条件准备 - **安装JDK** Spark依赖Java环境,需安装JDK 1.8+,并配置环境变量: ```bash export JAVA_HOME=/usr/local/src/jdk export PATH=$JAVA_HOME/bin:$PATH ``` 验证:`java -version`[^1]。 - **配置SSH免密登录** Spark需要无密码访问本地节点: ```bash ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` 验证:`ssh localhost` 应无需输入密码[^4]。 #### 2. 安装Hadoop伪分布式集群 参考Hadoop伪分布式搭建流程,确保以下服务正常运行: - NameNode - DataNode - ResourceManager - NodeManager 验证:`jps` 命令应显示上述进程[^1]。 #### 3. 下载并解压Spark 从[Spark官网](https://spark.apache.org/)下载安装包(建议3.x版本),解压至目标目录: ```bash tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /usr/local/src/ mv /usr/local/src/spark-3.3.1-bin-hadoop3 /usr/local/src/spark ``` #### 4. 配置Spark环境变量 编辑 `~/.bashrc` 或 `/etc/profile`,添加: ```bash export SPARK_HOME=/usr/local/src/spark export PATH=$SPARK_HOME/bin:$PATH ``` 执行 `source ~/.bashrc` 生效。 #### 5. 修改Spark配置文件 进入Spark配置目录,复制模板文件并编辑: ```bash cd /usr/local/src/spark/conf cp spark-env.sh.template spark-env.sh ``` 在 `spark-env.sh` 中添加: ```bash export JAVA_HOME=/usr/local/src/jdk export SPARK_MASTER_IP=master # 本机主机名或IP export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop export SPARK_LOCAL_IP=master ``` 注意:`HADOOP_CONF_DIR` 需指向Hadoop配置文件目录[^2]。 #### 6. 启动Spark集群 - **启动Spark服务**: ```bash cd /usr/local/src/spark/sbin/ ./start-all.sh ``` 验证:访问 `http://master:8080` 查看集群状态[^1]。 - **启动Spark Shell**: ```bash cd /usr/local/src/spark/ ./bin/spark-shell ``` 成功进入交互式命令行即表示安装完成。 #### 7. 验证安装 运行示例任务计算Pi值: ```bash cd /usr/local/src/spark/ bin/run-example SparkPi 2>&1 | grep "Pi is" ``` 若输出类似 `Pi is roughly 3.1415`,则Spark运行正常[^3]。 #### 常见问题排查 - **权限问题**:确保用户(如hadoop)拥有Spark目录的读写权限,必要时使用 `chown` 或 `sudo`[^4]。 - **端口冲突**:检查8080(Web UI)、7077(Master端口)是否被占用。 - **HDFS集成失败**:确认 `HADOOP_CONF_DIR` 路径正确,且Hadoop服务已启动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值