为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何在Linux上安装与配置Hadoop?

/ 猿问

请问该如何在Linux上安装与配置Hadoop?

RISEBY 2019-09-10 14:10:09

如何在Linux上安装与配置Hadoop


查看完整描述

3 回答

?
收到一只叮咚

Hadoop最早是为了在Linux平台上使用而开发的,但是Hadoop在UNIX、Windows和Mac OS X系统上也运行良好。不过,在Windows上运行Hadoop稍显复杂,首先必须安装Cygwin以模拟Linux环境,然后才能安装Hadoop。Hadoop的安装非常简单,大家可以在官网上下载到最近的几个版本,在Unix上安装Hadoop的过程与在Linux上安装基本相同,因此下面不会对其进行详细介绍。

在Linux上安装与配置Hadoop

在Linux上安装Hadoop之前,需要先安装两个程序:

1. JDK 1.6或更高版本;

2. SSH(安全外壳协议),推荐安装OpenSSH。

下面简述一下安装这两个程序的原因:

1. Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK。

2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即依次序启动文件conf/slaves中记载的主机上的进程,只不过伪分布式中salve为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必须的。

一、安装JDK 1.6

安装JDK的过程很简单,下面以Ubuntu为例。

(1)下载和安装JDK

确保可以连接到互联网,输入命令:

sudo apt-get install sun-java6-jdk

输入密码,确认,然后就可以安装JDK了。

这里先解释一下sudo与apt这两个命令,sudo这个命令允许普通用户执行某些或全部需要root权限命令,它提供了详尽的日志,可以记录下每个用户使用这个命令做了些什么操作;同时sudo也提供了灵活的管理方式,可以限制用户使用命令。sudo的配置文件为/etc/sudoers。

apt的全称为the Advanced Packaging Tool,是Debian计划的一部分,是Ubuntu的软件包管理软件,通过apt安装软件无须考虑软件的依赖关系,可以直接安装所需要的软件,apt会自动下载有依赖关系的包,并按顺序安装,在Ubuntu中安装有apt的一个图形化界面程序synaptic(中文译名为“新立得”),大家如果有兴趣也可以使用这个程序来安装所需要的软件。(如果大家想了解更多,可以查看一下关于Debian计划的资料。)

(2)配置环境变量

输入命令:

sudo gedit /etc/profile

输入密码,打开profile文件。

在文件的最下面输入如下内容:

#set Java Environment
export JAVA_HOME= (你的JDK安装位置,一般为/usr/lib/jvm/java-6-sun)
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
export PATH="$JAVA_HOME/:$PATH"

这一步的意义是配置环境变量,使你的系统可以找到JDK。

(3)验证JDK是否安装成功

输入命令:

java -version

查看信息:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)

二、配置SSH免密码登录

同样以Ubuntu为例,假设用户名为u。

1)确认已经连接上互联网,输入命令

sudo apt-get install ssh

2)配置为可以无密码登录本机。

首先查看在u用户下是否存在.ssh文件夹(注意ssh前面有“.”,这是一个隐藏文件夹),输入命令:

ls -a /home/u

一般来说,安装SSH时会自动在当前用户下创建这个隐藏文件夹,如果没有,可以手动创建一个。

接下来,输入命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

解释一下,ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型;dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。(关于密钥密语的相关知识这里就不详细介绍了,里面会涉及SSH的一些知识,如果读者有兴趣,可以自行查阅资料。)

在Ubuntu中,~代表当前用户文件夹,这里即/home/u。

这个命令会在.ssh文件夹下创建两个文件id_dsa及id_dsa.pub,这是SSH的一对私钥和公钥,类似于钥匙及锁,把id_dsa.pub(公钥)追加到授权的key里面去。

输入命令:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

这段话的意思是把公钥加到用于认证的公钥文件中,这里的authorized_keys是用于认证的公钥文件。

至此无密码登录本机已设置完毕。

3)验证SSH是否已安装成功,以及是否可以无密码登录本机。

输入命令:

ssh -version

显示结果:

OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 Oct 2007
Bad escape character 'rsion'.

显示SSH已经安装成功了。

输入命令:

ssh localhost

会有如下显示:

The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 8b:c3:51:a5:2a:31:b7:74:06:9d:62:04:4f:84:f8:77.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux master 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Mon Oct 18 17:12:40 2010 from master
admin@Hadoop:~$

这说明已经安装成功,第一次登录时会询问你是否继续链接,输入yes即可进入。

实际上,在Hadoop的安装过程中,是否无密码登录是无关紧要的,但是如果不配置无密码登录,每次启动Hadoop,都需要输入密码以登录到每台机器的DataNode上,考虑到一般的Hadoop集群动辄数百台或上千台机器,因此一般来说都会配置SSH的无密码登录。

三、安装并运行Hadoop

介绍Hadoop的安装之前,先介绍一下Hadoop对各个节点的角色定义。

Hadoop分别从三个角度将主机划分为两种角色。第一,划分为master和slave,即主人与奴隶;第二,从HDFS的角度,将主机划分为NameNode和DataNode(在分布式文件系统中,目录的管理很重要,管理目录的就相当于主人,而NameNode就是目录管理者);第三,从MapReduce的角度,将主机划分为JobTracker和TaskTracker(一个job经常被划分为多个task,从这个角度不难理解它们之间的关系)。

Hadoop有官方发行版与cloudera版,其中cloudera版是Hadoop的商用版本,这里先介绍Hadoop官方发行版的安装方法。

Hadoop有三种运行方式:单节点方式、单机伪分布方式与集群方式。乍看之下,前两种方式并不能体现云计算的优势,在实际应用中并没有什么意义,但是在程序的测试与调试过程中,它们还是很有意义的。

你可以通过以下地址获得Hadoop的官方发行版,下载Hadoop-0.20.2.tar.gz并将其解压,这里会解压到用户目录下,一般为:/home/[你的用户名]/。

单节点方式配置:

安装单节点的Hadoop无须配置,在这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。

伪分布式配置:

你可以把伪分布式的Hadoop看做是只有一个节点的集群,在这个集群中,这个节点既是master,也是slave;既是NameNode也是DataNode;既是JobTracker,也是TaskTracker。

伪分布式的配置过程也很简单,只需要修改几个文件,如下所示。

进入conf文件夹,修改配置文件:

Hadoop-env.sh:
export JAVA_HOME=“你的JDK安装地址”

指定JDK的安装位置:

conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

这是Hadoop核心的配置文件,这里配置的是HDFS的地址和端口号。

conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

这是Hadoop中HDFS的配置,配置的备份方式默认为3,在单机版的Hadoop中,需要将其改为1。

conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

这是Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

需要注意的是,如果安装的是0.20之前的版本,那么只有一个配置文件,即为Hadoop-site.xml。

接下来,在启动Hadoop前,需格式化Hadoop的文件系统HDFS(这点与Windows是一样的,重新分区后的卷总是需要格式化的)。进入Hadoop文件夹,输入下面的命令:

bin/Hadoop NameNode -format

格式化文件系统,接下来启动Hadoop。

输入命令:

bin/start-all.sh(全部启动)

最后,验证Hadoop是否安装成功。

打开浏览器,分别输入网址:

http://localhost:50030 (MapReduce的Web页面)
http://localhost:50070 (HDFS的Web页面)

如果都能查看,说明Hadoop已经安装成功。

对于Hadoop来说,安装MapReduce及HDFS都是必须的,但是如果有必要,你依然可以只启动HDFS(start-dfs.sh)或MapReduce(start-mapred.sh)。



查看完整回答
反对 回复 2019-09-14
?
慕工程0101907

先说一下要准备哪些软件和信息:
  VMware-workstation;
  CentOS-6.0-i386-bin-DVD;
  eclipse-jee-luna-SR1-win32;
  hadoop-0.20.2;
  jdk-6u27-linux-i586;
  (由于hadoop对版本的要求较高,大家还是不要轻易更换版本,这里列出来的各种软件都是稳定发布版,网上很容易可以download到的)。
  整个教程分为这样5个部分来说:1)在Windows下安装虚拟机Vmware,并新建一个虚拟机装好centos系统;2)centos下设置ssh服务无密码登录;3)centos下安装jdk,并配置环境变量;4)centos下安装hadoop,并配置文件;5)windows下安装jdk和eclipse,并将eclipse与centos下的hadoop连接。可以说这5个部分每一个都很重要,尤其是第4)步。下面我们就详细说一下每一步该怎么做。
  Step 0: 请大家先在windows下新建一个普通用户,用户名为hadoop,我们所有的软件全在这个下面安装,用户名最好要是hadoop,因为这个要和后面很多username相同,设为hadoop比较好记。
  1)在Windows下安装虚拟机Vmware,并新建一个虚拟机装好centos系统;
  首先,下载VMware-workstation并安装,这步骤和一般windows下安装软件的过程是一样的,入门小白也会熟练操作,这里就节省点儿空间给后面重要的步骤了~
  然后,在Vmware的主页上新建一个虚拟机

  一路下一步,直到让你选择系统镜像路径,我们选择centos系统映像,如上图,点击下一步。然后,需要你输入linux的用户名,这个比较重要,最好填写hadoop,因为这个名字在后面要用到好多次!

  后面还是一路的“下一步”,直到让你设置虚拟机的内存大小,建议为1024M。如上图。后面就是要选择和虚拟机的网络类型有关的设置了,建议为“使用网络地址转换NAT”,如下图。这一步我当时选择了自动桥接的功能,找了一个晚上的错误。。。时间就这样白花花的没了~~

  之后还是一路的“下一步”,几乎都是使用它推荐的设置,我们就可以新建一个centos,等待个几分钟然后就可以进入centos界面了。看到那一抹科技蓝,有没有让你心动了呢~~哈哈哈,你确实走好了第一步!
  2)centos下设置ssh服务无密码登录;
  在桌面右击,选择openin Terminal,这个就是linux的终端了。希望读者有一些linux操作系统的基础,这样子上手更快一些。不过要是没有的话,也没有关系,我们是面向新手的教程。

  2.1. 先在linux命令行中输入su,提示密码,输入你自己设置的密码,这样子你后面的操作都具有了linux系统下的最高权限——root权限。
  2.2. 在设置ssh无密码登录之前,有一个特别重要的要先出好:关闭SELinux。这是因为centos会自动阻止你修改sshservice,我们只有关闭SELinux,重启才能生效。如何做,如下:
  修改/etc/selinux/config文件
  将SELINUX=enforcing改为SELINUX=disabled
  重启机器即可
  (note:在linux下修改文件,vi命令后会进入到文件窗口,按i进入insert,修改完毕之后再按esc推出insert,输入;:wq!保存并退出~这里要感谢泡哥,改了半天都不行,还是泡哥指点迷津了~~)
  2.3. 在linux命令行里输入:ssh-keygen -t rsa,然后一路回车。
  root@hadoopName-desktop:~$ssh-keygen -t rsa
  Generating public/private rsakey pair.
  Enterfile in which to save the key (/home/zhangtao/.ssh/id_rsa): //密钥保存位置,直接回车保持默认;
  Createddirectory '/home/zhangtao/.ssh'.
  Enter passphrase(empty for no passphrase): //设置密钥的密码,空密码直接回车即可;
  Enter samepassphrase again: //确认上一步设置的密码。
  然后进入 /root/.ssh/下面,会看到两个文件 id_rsa.pub,id_rsa,
  然后执行cp id_rsa.pub authorized_keys
  然后 ssh localhost 验证是否成功,第一次要你输入yes,以后就不需要了。
  如下图,由于我又验证了一次,所以还需要输入y,如果你是第一次验证是不要的。

  至此,ssh服务无密码登录设置完毕!
  3)centos下安装jdk,并配置环境变量;
  这一步中可以分为两步:安装jdk、配置jdk环境变量。
  3.1. 第一步:root 用户登陆,使用命令mkdir /usr/program新建目录/usr/program ,下载 JDK 安装包jdk-6u13-linux-i586.bin,将其复制到目录/usr/program下,用cd命令进入该目录,执行命令“./ jdk-6u13-linux-i586.bin”,命令运行完毕即安装完成,将在目录下生成文件夹/jdk1.6.0_13,此即为jdk被成功安装到目录:/usr/program/jdk1.6.0_13下。
  3.2. root 用户登陆,命令行中执行命令“vi/etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面 Hadoop 的配置还会用到)。
  # set java environment
  exportJAVA_HOME=/usr/program/jdk1.6.0_27
  exportJRE_HOME=/usr/program/jdk1.6.0_27/jre
  export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
  在vi编辑器增加以上内容后保存退出,并执行以下命令使配置生效!
  #chmod +x /etc/profile ;增加执行权限
  #source /etc/profile;使配置生效!
  配置完毕后,在命令行中输入:java -version,就会出现安装jdk的信息。

  这时,jdk的安装和配置环境变量就成功了~



查看完整回答
反对 回复 2019-09-14
?
慕莱坞森

1
查找以前是否安装有mysql,使用下面命令:
rpm -qa|grep -i mysql
如果显示有如下包则说明已安装mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
2
如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库
删除命令:rpm -e --nodeps 包名
( rpm -ev mysql-4.1.12-3.RHEL4.1 )
删除老版本mysql的开发头文件和库
命令:rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除
rm -f /etc/my.cnf
rm -fr /var/lib/mysql
下载mysql的rpm包
可以通过wget下载具体的地址因为不能用链接请大家去官网去找
(1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:MySQL服务器;
(2)MySQL-client-5.6.10-1.rhel5.x86_64.rpm:MySQL客户端;
(3)MySQL-devel-5.6.10-1.rhel5.x86_64.rpm:Mysql开发依赖包。
下载后放到Liunx服务器中,如图所示

安装MySQL Server的rpm包
rpm -ivh MySQL-server-5.6.21-1.linux_glibc2.5.x86_64.rpm
安装过程如图所示
安装完成后会生成root用户的随机密码,请使用“cat /root/.mysql_secret”或类似命令进行查看。

安装MySQL客户端
rpm -ivh MySQL-client-5.6.21-1.linux_glibc2.5.x86_64.rpm

安装MySQL开发依赖包
rpm -ivh MySQL-devel-5.6.21-1.linux_glibc2.5.x86_64.rpm

启动msyql
安装完成后mysql是没有启动的,运行mysql命令会提示如下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
可使用如下命令启动MySQL:
service mysql start
或者使用如下命令:
/etc/init.d/mysql start
可使用SET PASSWORD命令修改root用户的密码,参考如下:SET PASSWORD = PASSWORD('root123456');

登录MySQL
使用mysql命令登录MySQL服务器,运行MySQL的命令时,会提示需要设置root用户密码

设置开机自启动
/etc/init.d/mysql start
设置完成后重启系统,使用natstat –nat命令可看到MySQL的3306端口
至此我们已经安装好了mysql数据库,当然现在我们的数据库还不支持远程连接远程连接会出现以下代码:1130,ERROR 1130: Host 192.168.0.10 is not allowed to connect to this MySQL server,可以通过以下以下来解决
改表法:在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为'%'。
mysql>
mysql>use mysql;
mysql>select 'host' from user where user='root';
好了,开始享受mysql带来的强大功能吧

 


查看完整回答
反对 回复 2019-09-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信