虚拟机中四台Ubuntu安装配置Hadoop(上)

本文介绍如何在Ubuntu环境下配置Hadoop集群所需的SSH无密码登录,包括创建hadoop用户、生成SSH密钥对及分发密钥等关键步骤。

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

1. 环境

(1)硬件:Intel i5 3450,8G内存   

(2)软件:

         win7操作系统

         虚拟机 VMware 9

         虚拟机操作系统 :64位Ubuntu 12.04.01

         64位JDK,jdk-6u37-linux-x64.bin   (安装过程参考这里) 

(3)服务器部署

 (待补充)

 

2.  设置各节点

  (待补充)

 

3. 配置ssh

(1) Ubuntu中已经默认安装了ssh客户端,各个Ubuntu中都需要安装ssh服务,安装过程参考这里

(2) 创建hadoop用户(安装hadoop的几台服务器或者说Ubuntu虚拟机都需要创建同样的hadoop用户)

 

chensl@namenode:~$ sudo addgroup hadoop
[sudo] password for chensl: 
Adding group `hadoop' (GID 1001) ...
Done.
chensl@namenode:~$ sudo adduser --ingroup hadoop hadoop
Adding user `hadoop' ...
Adding new user `hadoop' (1001) with group `hadoop' ...
Creating home directory `/home/hadoop' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 

 输入密码 : hadoop

passwd: password updated successfully
Changing the user information for hadoop
Enter the new value, or press ENTER for the default
	Full Name []: hadoop
	Room Number []:       
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y

 输入Y 创建成功

当新添加的用户hadoop使用sudo命令时,会提示如下内容:

hadoop is not in the sudoers file.  This incident will be reported.

 表明hadoop用户还无法运行sudo的命令 ,所以需要做下的工作:

      (注:新装的ubuntu还未设定root密码,需要先使用原来账户执行sudo passwd root 命令来设定root的密码后,才可以su到root用户):
执行命令:

su -       (如果是用“su ”而不是 “su - ” 切换成root的话,可能无法编辑sudoers文件)

输入密码登录成功,执行

ls -l /etc/sudoers

 显示:

  -r--r----- 1 root root 723 Jan 31  2012 /etc/sudoers

执行下面代码修改文件属性可写:

chmod u+w /etc/sudoers    (修改文件属性可写)

 此时可查看到:

root@NameNode01:~# ls -l /etc/sudoers   (查看属性)
-rw-r----- 1 root root 723 Jan 31  2012 /etc/sudoers

 继续执行下面的操作:

gedit /etc/sudoers      (编辑文件)

 在 root  ALL=(ALL:ALL)  ALL  后面添加

hadoop ALL=(ALL) ALL

chmod u-w /etc/sudoers   (修改文件为原来不可写属性)
exit                     (退出root管理员身份)

(3) 建立ssh key:

su - hadoop                  (切换到hadoop用户)
ssh-keygen -t rsa -P ""      (这个命令将为Ubuntu系统上的hadoop用户产生密钥对id_rsa
                               和id_rsa.pub)

 输出结果:

chensl@NameNode01:~$ su - hadoop
Password:
hadoop@NameNode01:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
ab:88:59:08:33:3e:c6:59:17:a6:58:46:61:a8:60:65 hadoop@NameNode01
The key's randomart image is:
+--[ RSA 2048]----+
|  oE.            |
|.o+              |
|+  o o           |
|. + o .          |
|+. o .  S        |
|o+o..    .       |
| *. .   .        |
|. .+ . .         |
|  o . .          |
+-----------------+

(4)建立几台Ubuntu之间的ssh key无密码登录认证

在其他几台Ubuntu中hadoop主目录下 新建 .ssh目录,即 /home/hadoop/.ssh  的目录,(如果尚未有hadoop用户,需参照前面的步骤创建hadoop用户)

 

hadoop@DataNode01:~$ pwd
/home/hadoop                       (在hadoop的主目录下)
hadoop@DataNode01:~$ mkdir .ssh    (在DataNode01上执行)
hadoop@NN02:~$ mkdir .ssh          (在NN02上执行)
hadoop@DN02:~$ mkdir .ssh          (在DN02上执行)

 

将NameNode01上的  id_rsa.pub 传到另外三台Ubuntu的对应目录下,以DataNode01为例:

scp /home/hadoop/.ssh/id_rsa.pub  DataNode01:/home/hadoop/.ssh

 输出如下:

hadoop@NameNode01:~$ scp /home/hadoop/.ssh/id_rsa.pub  DataNode01:/home/hadoop/.ssh
The authenticity of host 'datanode01 (192.168.0.112)' can't be established.
ECDSA key fingerprint is ad:c8:15:c2:d5:af:24:aa:a2:be:34:9f:51:9b:d9:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'datanode01,192.168.0.112' (ECDSA) to the list of known hosts.
hadoop@datanode01's password:
id_rsa.pub                                    100%  399     0.4KB/s   00:00   

登录 DataNode01 查看 /home/hadoop/.ssh目录下:

hadoop@DataNode01:~$ ls -l .ssh    
total 4
-rw-r--r-- 1 hadoop hadoop 399 Feb 21 10:56 id_rsa.pub    (显示结果)

 

同样,在NameNode01上执行命令

scp /home/hadoop/.ssh/id_rsa.pub  DN02:/home/hadoop/.ssh
scp /home/hadoop/.ssh/id_rsa.pub  NN02:/home/hadoop/.ssh

 也把id_rsa.pub放置到对应目录下。

 

然后分别登录DataName01, DN02, NN02,将:/home/hadoop/.ssh/ 目录下的 id_rsa.pub 重命名成“authorized_keys” 执行下面的命令:

 

hadoop@DataNode01:~$ mv /home/hadoop/.ssh/id_rsa.pub  /home/hadoop/.ssh/authorized_keys
(DataNode01上执行)

hadoop@NN02:~$ mv /home/hadoop/.ssh/id_rsa.pub  /home/hadoop/.ssh/authorized_keys
(NN02上执行)

hadoop@DN02:~$ mv /home/hadoop/.ssh/id_rsa.pub  /home/hadoop/.ssh/authorized_keys
(DN02上执行)

 

此时可以在NameNode01上ssh无密码登录其余三台机器了,可以执行下面的命令检验:

hadoop@NameNode01:~$ ssh DataNode01   (执行此命令ssh到DataNode01,显示结果如下:)
The authenticity of host 'DataNode01 (192.168.0.112)' can't be established.

ECDSA key fingerprint is 85:f7:86:6f:3c:cc:30:69:fc:8a:94:87:32:e7:e3:51.

Are you sure you want to continue connecting (yes/no)? yes  (第一次ssh登录需要yes)
Warning: Permanently added 'DataNode01' (ECDSA) to the list of known hosts.

Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
338 packages can be updated.
104 updates are security updates.
Last login: Thu Feb 21 12:30:31 2013 from namenode01
hadoop@DataNode01:~$     (此时已经由namenode01登录到DataNode01,exit命令退出)

  

NameNode01通过ssh登录其他几台已经不需要密码了,通过下面操作,ssh登录自身也不需要密码。

hadoop@NameNode01:~$ cp /home/hadoop/.ssh/id_rsa.pub  /home/hadoop/.ssh/authorized_keys
(复制)

hadoop@NameNode01:~$ ssh localhost     (ssh登录NameNode01本地)

 

此时NameNode01可以ssh登录任意一台Ubuntu了,另外三台还不能登录NameNode01,下面需要做的是将NameNode01里面生成的id_rsa 放置到另外三台Ubuntu的同等目录下

hadoop@NameNode01:~$ scp /home/hadoop/.ssh/id_rsa  DataNode01:/home/hadoop/.ssh  (执行命令结果如下)
id_rsa                                        100% 1679     1.6KB/s   00:00    
hadoop@NameNode01:~$ scp /home/hadoop/.ssh/id_rsa  NN02:/home/hadoop/.ssh 
(执行命令结果如下)

id_rsa                                        100% 1679     1.6KB/s   00:00    
hadoop@NameNode01:~$ scp /home/hadoop/.ssh/id_rsa  DN02:/home/hadoop/.ssh
(执行命令结果如下)

id_rsa                                        100% 1679     1.6KB/s   00:00    
hadoop@NameNode01:~$ 

 

 此时四台虚拟机Ubuntu之间,任意两台之间可以ssh无密码登录了,配置ssh完成。

<think>好的,我现在需要帮助用户了解如何在Ubuntu虚拟机安装配置Hadoop。根据用户提供的引用内容,我需要整合这些步骤,并确保符合系统级指令的要求。首先,用户提到的引用[1]是关于虚拟机设置和ISO镜像的选择,引用[2]和[3]涉及Hadoop安装和SSH配置。 首先,安装虚拟机配置Ubuntu系统是关键的第一步。用户需要确保虚拟机设置正确,选择正确的ISO镜像,这对应引用[1]的内容。然后,安装必要的软件,比如Java环境,因为Hadoop依赖Java。接下来是SSH的安装配置,引用[3]提到安装openssh-server,这一步很重要,因为Hadoop集群中的节点需要通过SSH通信。 然后,下载并解压Hadoop,这部分需要用户从官网获取安装包。接着是配置环境变量,将Hadoop的路径添加到.bashrc文件中,这样系统才能识别Hadoop命令。配置文件的修改是核心步骤,包括hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml,这些文件需要根据单机或伪分布式模式进行相应调整。引用[2]提到了配置yarn-env.sh,这也需要特别注意。 格式化HDFS和启动Hadoop集群是接下来的步骤,用户需要确保没有错误信息出现。最后,验证安装是否成功,可以通过访问Web界面或运行示例程序来测试。用户可能需要进一步优化的地方,比如配置SSH免密登录,这能简化启动过程。 在生成相关问题时,需要考虑用户可能遇到的后续问题,比如环境变量配置错误、SSH连接问题或配置文件格式错误。这些都是常见的安装障碍,用户可能需要进一步的帮助来解决这些问题。 需要确保所有步骤中的代码块和命令正确无误,并且用中文清晰解释每个步骤的目的和操作方法。同时,按照要求,数学表达式用$...$格式,独立公式用$$...$$,但在这个问题中可能涉及较少数学内容,更多是命令行操作。最后,生成的相关问题要覆盖安装后的配置优化、常见错误解决以及不同模式的应用场景,帮助用户全面理解Hadoop安装和使用。</think>### Ubuntu虚拟机安装配置Hadoop教程 #### 1. 虚拟机环境准备 - **步骤1**:在虚拟机软件(如VMware)中创建Ubuntu虚拟机。选择【编辑虚拟机设置】→【CD/DVD】→【使用ISO映像】,加载Ubuntu 20.04镜像文件[^1]。 - **步骤2**:完成Ubuntu系统安装后,更新软件包: ```bash sudo apt update && sudo apt upgrade -y ``` #### 2. 安装依赖环境 - **Java环境安装**: ```bash sudo apt install openjdk-8-jdk -y ``` 验证安装:`java -version`(需显示1.8.x版本)。 - **SSH配置**: ```bash sudo apt install openssh-server -y # 安装SSH服务[^3] ssh-keygen -t rsa # 生成密钥对 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 配置免密登录 ``` #### 3. Hadoop安装配置 - **步骤1**:下载Hadoop 3.x版本(以3.3.6为例): ```bash wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop ``` - **步骤2**:配置环境变量(编辑`~/.bashrc`): ```bash export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 执行`source ~/.bashrc`生效。 - **步骤3**:修改Hadoop配置文件: - **hadoop-env.sh**: ```bash echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh ``` - **core-site.xml**(单机模式): ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` - **hdfs-site.xml**: ```xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> ``` #### 4. 初始化与启动 - **格式化HDFS**: ```bash hdfs namenode -format ``` - **启动Hadoop服务**: ```bash start-dfs.sh # 启动HDFS start-yarn.sh # 启动YARN(需配置yarn-env.sh[^2]) ``` #### 5. 验证安装 - **检查进程**: ```bash jps # 应显示NameNode、DataNode、ResourceManager等进程 ``` - **访问Web界面**: - HDFS:`http://localhost:9870` - YARN:`http://localhost:8088`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值