阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在Linux下安装与配置Hadoop

403次阅读
没有评论

共计 21893 个字符,预计需要花费 55 分钟才能阅读完成。

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

  1. JDK1.6 或者更高的版本;
  2. SSH(安全外壳协议),推荐安装 OpenSSH

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

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

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

1  安装 JDK1.7
Linux 会自带 JDK,如果不使用自带版本的话需要卸载。

(一)  卸载系统自带的 jdk 版本

查看自带的 jdk

#rpm -qa | grep gcj

看到如下信息:

libgcj-4.1.2-44.el5

java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

使用 rpm -e –nodeps 命令删除上面查找的内容:

#rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

(二)  卸载 rpm 安装的 jkd 版本

查看安装的 jdk:

#rpm -qa|grep jdk

看到如下信息:

java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

卸载:

#rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

(三)  安装 jdk

首先到 sun 官网下载安装包,下面是最新的安装包 http://java.sun.com/javase/downloads/index.jsp

如果希望找以前的版本,到下面的地址可以找到 http://java.sun.com/products/archive/

有 jdk-6u7-linux-i586-rpm.bin 和 jdk-6u7-linux-i586.bin 两种版本。bin 是二进制包,而 rpm 是 RedHat package 就是红帽的标准安装包。区别就是 rpm 安装的时候给你自动配置,一般都是 lib 安装到 /usr/lib,bin 安装到 /usr/bin 下边,就算不是,在 /usr/bin 下也要建立一个软连接。

下边以现有最新版本 jdk-7u3-linux-i586.rpm 为例进行安装:

将安装文件放到:/usr/java 目录下,修改权限,命令如下(需先用 cd 命令切换到相应目录下):

# chmod +x  jdk-7u3-linux-i586.rpm

执行文件的安装:

# rpm-ivh jdk-7u3-linux-i586.rpm

(四)  配置环境变量

修改 /etc/profile 文件,在该文件最后加上

export JAVA_HOME=/usr/java/jdk1.7.0_03

export PATH=$PATH: /usr/java/jdk1.7.0_03/bin

保存

(五)  执行

cd /etc

source profile

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

[root@localhost ~]# java -version

java version “1.7.0”

Java(TM) SE Runtime Environment (build 1.7.0-b147)

Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)

2  配置 SSH 免密码登陆
首先,确保当前可以连接到互联网。在 root 下修改 /etc/ssh/sshd_config 文件(客户端、服务器都需要更改),将

#AuthorizedKeysFile  .ssh/authorized_keys

前面的#号去掉,即启用

AuthorizedKeysFile  .ssh/authorized_keys

如果需要 root 也能 ssh 登录,把“#PermitRootLogin yes”前面的#号也去掉。

同样 root 账户下,重启 sshd 服务使之生效

/etc/rc.d/init.d/sshd  restart

客户端中,切换到需要 ssh 登录的帐户下:

ssh-keygen  -t  dsa 

产生公私钥对。回车,采用默认文件保存钥匙。

xxxxx 回车  键入密码短语,直接回车为不建立密码短语。密码短语至少 5 个字符

xxxxx 回车  重复密码短语,直接回车为不建立密码短语

也可以:

ssh-keygen  -t  dsa  -P  ‘ ‘  -f  /home/ 账户名 /.ssh/id_dsa 

ssh-keygen 代表生成密钥;-t(注意区分大小写)表示指定生成的迷密钥类型;dsa 是 dsa 密钥认证的意思,即密钥类型;- P 用于提供密语;- f 指定生成的密钥文件。这个

公私钥产生在此账户的.ssh 目录中,id_dsa 为私钥,id_dsa.pub 为公钥

服务器中,切换到需要 ssh 登录的帐户下:

如果服务器中尚未建立公私钥对,那么首先按照客户端的方法建立公私钥对

scp  账户名 @客户端主机名或 ip 地址:/home/ 帐户名 /.ssh/id_dsa.pub  /home/ 帐户名 /

将客户端账户的公钥拷到服务器中。客户端用主机名或 ip 地址均可,但是需与 ssh 登录命令相符,建议将主机名与 ip 地址写入 /etc/hosts 中,此处用主机名即可(下同)。

yes  将客户端写入 known_hosts 中

输入客户端中的账户密码完成复制

将 id_rsa.pub 中的内容添加到 authorized_keys 文件中,authorized_keys 文件名需与 sshd_config 中的设置相符

cat  /home/ 帐户名 /id_rsa.pub  >>/home/ 帐户名 /.ssh/authorized_keys

修改 authorized_keys 文件的权限,至少为 644,也可更为严格(600),不修改的话 ssh 无密码登录不起作用:

chmod  644  /home/ 帐户名 /.ssh/authorized_keys 

客户端中,切换到需要 ssh 登录的帐户下:

ssh  服务器主机名  – 登录服务器,若在服务器与客户端中的帐户名不同,则

ssh  帐户名 @服务器主机名

yes  – 将服务器写入 known_hosts 中

若产生公私钥时设置了密码短语,还需要输入密码短语,为了方便,可在客户端中 ssh-add,然后输入密码短语,下次再 ssh 登录,无需再输入密码短语。

验证:

[test@localhost ~]$ ssh -version

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Bad escape character ‘rsion’.

显示 SSH 已经安装成功了。输入命令:

ssh localhost

会有如下显示:

[test@localhost .ssh]$ ssh localhost

The authenticity of host ‘localhost (127.0.0.1)’ can’t be established.

RSA key fingerprint is 2b:36:6b:23:4d:e4:71:2b:b0:79:69:36:0e:65:3b:0f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘localhost’ (RSA) to the list of known hosts.

 

Last login: Tue Oct 30 13:08:33 2012 from localhost.localdomain

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

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

关于公私钥对的一点理解:公私钥对就像是一套钥匙和锁,公钥是锁,私钥是钥匙。私钥留在客户端中,公钥发给服务器。服务器可以有很多把锁,客户端只有一把钥匙。当客户端 ssh 登录服务器时,服务器会找到这个客户端发的锁,然后跟客户端要钥匙,如果钥匙是配套的,那么登录成功,反之登录失败。当然,以上是针对同一个用户说的,不同用户的公私钥对也不同,而且每次 ssh-keygen 产生的公私钥对也不同。

备注将普通用户修改为超级用户的方法:

l  进入超级用户模式。也就是输入 ”su -“, 系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。

l  添加文件的写权限。也就是输入命令 ”chmod u+w /etc/sudoers”。

l  编辑 /etc/sudoers 文件。也就是输入命令 ”vim /etc/sudoers”, 输入 ”i” 进入编辑模式,找到这一行:”root ALL=(ALL) ALL” 在起下面添加 ”xxx ALL=(ALL) ALL”(这里的 xxx 是你的用户名),然后保存(就是先摁一下 Esc 键,然后输入 ”:wq”)退出。

l  撤销文件的写权限。也就是输入命令 ”chmod u-w /etc/sudoers”。

3  安装并运行 Hadoop
先介绍一下 Hadoop 对各个节点的角色意义:

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

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

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

可以通过下面的地址下载获得 Hadoop 的官方发行版:

http://www.apache.org/dist/hadoop/core/

下载 hadoop-1.0.4.tar.gz 并将其解压,解压到用户目录下:/home/[用户]/

tar -xzvf  hadoop-1.0.4.tar.gz

l  单节点方式配置

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

l  伪分布式配置

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

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

进入 conf 文件夹(在解压缩的目录下),修改配置文件。

[test@localhost conf]$ pwd

/home/test/hadoop-1.0.4/conf

[test@localhost conf]$ ls hadoop-env.sh

hadoop-env.sh

[test@localhost conf]$ vim hadoop-env.sh

添加内容:

export JAVA_HOME=/usr/java/jdk1.7.0

指定 JDK 的安装位置

[test@localhost conf]$ pwd

/home/test/hadoop-1.0.4/conf

[test@localhost conf]$ ls core-site.xml

core-site.xml

修改文件

[test@localhost conf]$ vim core-site.xml

添加内容:

<configuration>

  <property>

      <name>fs.default.name</name>

      <value>hdfs://localhost:9000</value>

  </property>

</configuration>

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

[test@localhost conf]$ ls hdfs-site.xml

hdfs-site.xml

修改文件:

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>1</value>

  </property>

</configuration>

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

[test@localhost conf]$ ls mapred-site.xml

mapred-site.xml

[test@localhost conf]$ vim 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 文件夹,输入下面的命令:

[test@localhost hadoop-1.0.4]$  bin/hadoop namenode -format

12/11/01 00:20:50 INFO namenode.NameNode: STARTUP_MSG:

 

Re-format filesystem in /tmp/hadoop-test/dfs/name ? (Y or N) Y

12/11/01 00:20:55 INFO util.GSet: VM type      = 32-bit

12/11/01 00:20:55 INFO util.GSet: 2% max memory = 17.77875 MB

12/11/01 00:20:55 INFO util.GSet: capacity      = 2^22 = 4194304 entries

12/11/01 00:20:55 INFO util.GSet: recommended=4194304, actual=4194304

12/11/01 00:20:55 INFO namenode.FSNamesystem: fsOwner=test

12/11/01 00:20:55 INFO namenode.FSNamesystem: supergroup=supergroup

12/11/01 00:20:55 INFO namenode.FSNamesystem: isPermissionEnabled=true

12/11/01 00:20:55 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

12/11/01 00:20:55 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

12/11/01 00:20:55 INFO namenode.NameNode: Caching file names occuring more than 10 times

12/11/01 00:20:56 INFO common.Storage: Image file of size 110 saved in 0 seconds.

12/11/01 00:20:56 INFO common.Storage: Storage directory /tmp/hadoop-test/dfs/name has been successfully formatted.

12/11/01 00:20:56 INFO namenode.NameNode: SHUTDOWN_MSG:

 

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

首先赋予 test 用户 hadoop 文件夹的使用权限:

[test@localhost ~]$ chown -hR test /home/test/hadoop-1.0.4

输入命令:

[test@localhost hadoop-1.0.4]$ bin/start-all.sh

starting namenode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-namenode-localhost.localdomain.out

localhost: starting datanode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-datanode-localhost.localdomain.out

localhost: starting secondarynamenode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-secondarynamenode-localhost.localdomain.out

starting jobtracker, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-jobtracker-localhost.localdomain.out

localhost: starting tasktracker, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-tasktracker-localhost.localdomain.out

利用 jps 查看已经启动的服务:

[test@localhost ~]$ cd /home/test/hadoop-1.0.4

[test@localhost hadoop-1.0.4]$ jps

[test@localhost hadoop-1.0.4]$ jps

12657 SecondaryNameNode

12366 NameNode

12995 Jps

12877 TaskTracker

12739 JobTracker

12496 DataNode

最后,验证 Hadoop 是否安装成功。打开浏览器,分别输入网址:

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

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

如果都能看到,说明 Hadoop 已经安装成功。对于 Hadoop 来说,安装 MapReduce 及 HDFS 都是必须的,但是如果有必要,依然可以只启动 HDFS 或者 MapReduce:

[test@localhost hadoop-1.0.4]$ bin/start-dfs.sh

[test@localhost hadoop-1.0.4]$ bin/start-mapred.sh

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-07/120247p2.htm

4  搭建 Hadoop 的开发环境
Linux 下安装 eclipse

下载地址:http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/junor

下载:eclipse-jee-juno-linux-gtk.tar.gz

解压缩:

[test@localhost ~]$ pwd

/home/test

[test@localhost ~]$ tar -xvf eclipse-jee-juno-linux-gtk.tar.gz

刚刚解压缩出来的 Eclipse 是找不到 Java 执行路径的,为了让每一位 linux 的使用者都可以执行 eclipse,需要执行一下命令:

[test@localhost eclipse]$ /home/test/eclipse/eclipse -vm /usr/java/jdk1.7.0/bin/java -data ~/workspace

其中 /home/test/eclipse/eclipse 是对 eclipse-jee-juno-linux-gtk.tar.gz 解压之后的 eclipse 文件: -vm 参数用以指定使用哪一个 jvm 来执行 eclipse,在此我们指定之前安装的 Sun JDK 1.7.0-01 版 -date 参数用以告诉 eclipse 要将项目储存在哪一个目录中。在此我们指定储存在使用者 home 目录 (~) 或用户根目录(”)的 workspace 目录中。此时,会看到 eclipse 图形界面出现,安装成功。可以在桌面创建启动器,将启动命令写入:/home/test/eclipse/eclipse,这样每次在桌面上就可以直接启动 eclipse 了。

下载插件 hadoop-eclipse-plugin-1.0.3.jar,将插件拷贝到 /home/test/eclipse/plugins 下即可。

在 Linux 下安装与配置 Hadoop

  • 在左边的 project explorer 上头会有一个 DFS locations 的标志
  • 在 windows -> preferences 里面会多一个 hadoop map/reduce 的选项,选中这个选项,然后右边,把下载的 hadoop 根目录选中

如果能看到以上两点说明安装成功了。

插件装完启动 hadoop,然后就可以建一个 hadoop 连接了,就相当于 eclipse 里配置一个 weblogic 的连接。

第一步,打开 Map/Reduce Locations 视图,在右上角有个大象的标志点击:

在 Linux 下安装与配置 Hadoop

第二步,在点击大象后弹出的对话框进行进行参数的添加,如下图:

在 Linux 下安装与配置 Hadoop

location name: 这个随便填写:localhost.

Map/Reduce Master 这个框里

Host:就是 jobtracker 所在的集群机器,这里写 localhost

Hort:就是 jobtracker 的 port,这里写的是 9001

这两个参数就是 mapred-site.xml 里面 mapred.job.tracker 里面的 ip 和 port

DFS Master 这个框里

Host:就是 namenode 所在的集群机器,这里写 localhost

Port:就是 namenode 的 port,这里写 9000

这两个参数就是 core-site.xml 里面 fs.default.name 里面的 ip 和 port

(Use M/R master host,这个复选框如果选上,就默认和 Map/Reduce Master 这个框里的 host 一样,如果不选择,就可以自己定义输入,这里 jobtracker 和 namenode 在一个机器上,所以是一样的,就勾选上)

 user name:这个是连接 hadoop 的用户名,因为我是用 test 用户安装的 hadoop,而且没建立其他的用户,所以就用 test。下面的不用填写。然后点击 finish 按钮,此时,这个视图中就有多了一条记录。

在 Linux 下安装与配置 Hadoop

第三步,重启 eclipse 并重新编辑刚才建立的那个连接记录,如图现在编辑 advance parameters tab 页

在 Linux 下安装与配置 Hadoop

(重启编辑 advance parameters tab 页原因:在新建连接的时候,这个 advance paramters  tab 页面的一些属性会显示不出来,显示不出来也就没法设置,所以必须重启一下 eclipse 再进来编辑才能看到)

这里大部分的属性都已经自动填写上了,其实就是把 core-defaulte.xml、hdfs-defaulte.xml、mapred-defaulte.xml 里面的一些配置属性展示出来。因为在安装 hadoop 的时候,其 site 系列配置文件里有改动,所以这里也要弄成一样的设置。主要关注的有以下属性:

fs.defualt.name:这个在 General tab 页已经设置了

mapred.job.tracker:这个在 General tab 页也设置了

然后点击 finish,然后就连接上了,连接上的标志如图:

在 Linux 下安装与配置 Hadoop

DFS Locations 下面会有一只大象,下面会有一个文件夹,即 hdfs 的根目录,这里就是展示的分布式文件系统的目录结构了。

到这里为止,Eclipse hadoop 开发环境配置已经完全搭建完毕。最后,就可以在 eclipse 中像一般 java 程序那样开发 hadoop 程序了。

下面做一个简单的测试:

(一)  第 1 步:新建项目。

File–>New–>Other–>Map/Reduce Project

项目名可以随便取,如 WordCount。

复制 hadoop 安装目录 /src/example/org/apache/hadoop/example/WordCount.java 到刚才新建的项目下面。

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

  1. JDK1.6 或者更高的版本;
  2. SSH(安全外壳协议),推荐安装 OpenSSH

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

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

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

1  安装 JDK1.7
Linux 会自带 JDK,如果不使用自带版本的话需要卸载。

(一)  卸载系统自带的 jdk 版本

查看自带的 jdk

#rpm -qa | grep gcj

看到如下信息:

libgcj-4.1.2-44.el5

java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

使用 rpm -e –nodeps 命令删除上面查找的内容:

#rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

(二)  卸载 rpm 安装的 jkd 版本

查看安装的 jdk:

#rpm -qa|grep jdk

看到如下信息:

java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

卸载:

#rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

(三)  安装 jdk

首先到 sun 官网下载安装包,下面是最新的安装包 http://java.sun.com/javase/downloads/index.jsp

如果希望找以前的版本,到下面的地址可以找到 http://java.sun.com/products/archive/

有 jdk-6u7-linux-i586-rpm.bin 和 jdk-6u7-linux-i586.bin 两种版本。bin 是二进制包,而 rpm 是 RedHat package 就是红帽的标准安装包。区别就是 rpm 安装的时候给你自动配置,一般都是 lib 安装到 /usr/lib,bin 安装到 /usr/bin 下边,就算不是,在 /usr/bin 下也要建立一个软连接。

下边以现有最新版本 jdk-7u3-linux-i586.rpm 为例进行安装:

将安装文件放到:/usr/java 目录下,修改权限,命令如下(需先用 cd 命令切换到相应目录下):

# chmod +x  jdk-7u3-linux-i586.rpm

执行文件的安装:

# rpm-ivh jdk-7u3-linux-i586.rpm

(四)  配置环境变量

修改 /etc/profile 文件,在该文件最后加上

export JAVA_HOME=/usr/java/jdk1.7.0_03

export PATH=$PATH: /usr/java/jdk1.7.0_03/bin

保存

(五)  执行

cd /etc

source profile

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

[root@localhost ~]# java -version

java version “1.7.0”

Java(TM) SE Runtime Environment (build 1.7.0-b147)

Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)

2  配置 SSH 免密码登陆
首先,确保当前可以连接到互联网。在 root 下修改 /etc/ssh/sshd_config 文件(客户端、服务器都需要更改),将

#AuthorizedKeysFile  .ssh/authorized_keys

前面的#号去掉,即启用

AuthorizedKeysFile  .ssh/authorized_keys

如果需要 root 也能 ssh 登录,把“#PermitRootLogin yes”前面的#号也去掉。

同样 root 账户下,重启 sshd 服务使之生效

/etc/rc.d/init.d/sshd  restart

客户端中,切换到需要 ssh 登录的帐户下:

ssh-keygen  -t  dsa 

产生公私钥对。回车,采用默认文件保存钥匙。

xxxxx 回车  键入密码短语,直接回车为不建立密码短语。密码短语至少 5 个字符

xxxxx 回车  重复密码短语,直接回车为不建立密码短语

也可以:

ssh-keygen  -t  dsa  -P  ‘ ‘  -f  /home/ 账户名 /.ssh/id_dsa 

ssh-keygen 代表生成密钥;-t(注意区分大小写)表示指定生成的迷密钥类型;dsa 是 dsa 密钥认证的意思,即密钥类型;- P 用于提供密语;- f 指定生成的密钥文件。这个

公私钥产生在此账户的.ssh 目录中,id_dsa 为私钥,id_dsa.pub 为公钥

服务器中,切换到需要 ssh 登录的帐户下:

如果服务器中尚未建立公私钥对,那么首先按照客户端的方法建立公私钥对

scp  账户名 @客户端主机名或 ip 地址:/home/ 帐户名 /.ssh/id_dsa.pub  /home/ 帐户名 /

将客户端账户的公钥拷到服务器中。客户端用主机名或 ip 地址均可,但是需与 ssh 登录命令相符,建议将主机名与 ip 地址写入 /etc/hosts 中,此处用主机名即可(下同)。

yes  将客户端写入 known_hosts 中

输入客户端中的账户密码完成复制

将 id_rsa.pub 中的内容添加到 authorized_keys 文件中,authorized_keys 文件名需与 sshd_config 中的设置相符

cat  /home/ 帐户名 /id_rsa.pub  >>/home/ 帐户名 /.ssh/authorized_keys

修改 authorized_keys 文件的权限,至少为 644,也可更为严格(600),不修改的话 ssh 无密码登录不起作用:

chmod  644  /home/ 帐户名 /.ssh/authorized_keys 

客户端中,切换到需要 ssh 登录的帐户下:

ssh  服务器主机名  – 登录服务器,若在服务器与客户端中的帐户名不同,则

ssh  帐户名 @服务器主机名

yes  – 将服务器写入 known_hosts 中

若产生公私钥时设置了密码短语,还需要输入密码短语,为了方便,可在客户端中 ssh-add,然后输入密码短语,下次再 ssh 登录,无需再输入密码短语。

验证:

[test@localhost ~]$ ssh -version

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Bad escape character ‘rsion’.

显示 SSH 已经安装成功了。输入命令:

ssh localhost

会有如下显示:

[test@localhost .ssh]$ ssh localhost

The authenticity of host ‘localhost (127.0.0.1)’ can’t be established.

RSA key fingerprint is 2b:36:6b:23:4d:e4:71:2b:b0:79:69:36:0e:65:3b:0f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘localhost’ (RSA) to the list of known hosts.

 

Last login: Tue Oct 30 13:08:33 2012 from localhost.localdomain

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

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

关于公私钥对的一点理解:公私钥对就像是一套钥匙和锁,公钥是锁,私钥是钥匙。私钥留在客户端中,公钥发给服务器。服务器可以有很多把锁,客户端只有一把钥匙。当客户端 ssh 登录服务器时,服务器会找到这个客户端发的锁,然后跟客户端要钥匙,如果钥匙是配套的,那么登录成功,反之登录失败。当然,以上是针对同一个用户说的,不同用户的公私钥对也不同,而且每次 ssh-keygen 产生的公私钥对也不同。

备注将普通用户修改为超级用户的方法:

l  进入超级用户模式。也就是输入 ”su -“, 系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。

l  添加文件的写权限。也就是输入命令 ”chmod u+w /etc/sudoers”。

l  编辑 /etc/sudoers 文件。也就是输入命令 ”vim /etc/sudoers”, 输入 ”i” 进入编辑模式,找到这一行:”root ALL=(ALL) ALL” 在起下面添加 ”xxx ALL=(ALL) ALL”(这里的 xxx 是你的用户名),然后保存(就是先摁一下 Esc 键,然后输入 ”:wq”)退出。

l  撤销文件的写权限。也就是输入命令 ”chmod u-w /etc/sudoers”。

3  安装并运行 Hadoop
先介绍一下 Hadoop 对各个节点的角色意义:

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

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

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

可以通过下面的地址下载获得 Hadoop 的官方发行版:

http://www.apache.org/dist/hadoop/core/

下载 hadoop-1.0.4.tar.gz 并将其解压,解压到用户目录下:/home/[用户]/

tar -xzvf  hadoop-1.0.4.tar.gz

l  单节点方式配置

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

l  伪分布式配置

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

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

进入 conf 文件夹(在解压缩的目录下),修改配置文件。

[test@localhost conf]$ pwd

/home/test/hadoop-1.0.4/conf

[test@localhost conf]$ ls hadoop-env.sh

hadoop-env.sh

[test@localhost conf]$ vim hadoop-env.sh

添加内容:

export JAVA_HOME=/usr/java/jdk1.7.0

指定 JDK 的安装位置

[test@localhost conf]$ pwd

/home/test/hadoop-1.0.4/conf

[test@localhost conf]$ ls core-site.xml

core-site.xml

修改文件

[test@localhost conf]$ vim core-site.xml

添加内容:

<configuration>

  <property>

      <name>fs.default.name</name>

      <value>hdfs://localhost:9000</value>

  </property>

</configuration>

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

[test@localhost conf]$ ls hdfs-site.xml

hdfs-site.xml

修改文件:

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>1</value>

  </property>

</configuration>

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

[test@localhost conf]$ ls mapred-site.xml

mapred-site.xml

[test@localhost conf]$ vim 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 文件夹,输入下面的命令:

[test@localhost hadoop-1.0.4]$  bin/hadoop namenode -format

12/11/01 00:20:50 INFO namenode.NameNode: STARTUP_MSG:

 

Re-format filesystem in /tmp/hadoop-test/dfs/name ? (Y or N) Y

12/11/01 00:20:55 INFO util.GSet: VM type      = 32-bit

12/11/01 00:20:55 INFO util.GSet: 2% max memory = 17.77875 MB

12/11/01 00:20:55 INFO util.GSet: capacity      = 2^22 = 4194304 entries

12/11/01 00:20:55 INFO util.GSet: recommended=4194304, actual=4194304

12/11/01 00:20:55 INFO namenode.FSNamesystem: fsOwner=test

12/11/01 00:20:55 INFO namenode.FSNamesystem: supergroup=supergroup

12/11/01 00:20:55 INFO namenode.FSNamesystem: isPermissionEnabled=true

12/11/01 00:20:55 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

12/11/01 00:20:55 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

12/11/01 00:20:55 INFO namenode.NameNode: Caching file names occuring more than 10 times

12/11/01 00:20:56 INFO common.Storage: Image file of size 110 saved in 0 seconds.

12/11/01 00:20:56 INFO common.Storage: Storage directory /tmp/hadoop-test/dfs/name has been successfully formatted.

12/11/01 00:20:56 INFO namenode.NameNode: SHUTDOWN_MSG:

 

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

首先赋予 test 用户 hadoop 文件夹的使用权限:

[test@localhost ~]$ chown -hR test /home/test/hadoop-1.0.4

输入命令:

[test@localhost hadoop-1.0.4]$ bin/start-all.sh

starting namenode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-namenode-localhost.localdomain.out

localhost: starting datanode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-datanode-localhost.localdomain.out

localhost: starting secondarynamenode, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-secondarynamenode-localhost.localdomain.out

starting jobtracker, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-jobtracker-localhost.localdomain.out

localhost: starting tasktracker, logging to /home/test/hadoop-1.0.4/libexec/../logs/hadoop-test-tasktracker-localhost.localdomain.out

利用 jps 查看已经启动的服务:

[test@localhost ~]$ cd /home/test/hadoop-1.0.4

[test@localhost hadoop-1.0.4]$ jps

[test@localhost hadoop-1.0.4]$ jps

12657 SecondaryNameNode

12366 NameNode

12995 Jps

12877 TaskTracker

12739 JobTracker

12496 DataNode

最后,验证 Hadoop 是否安装成功。打开浏览器,分别输入网址:

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

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

如果都能看到,说明 Hadoop 已经安装成功。对于 Hadoop 来说,安装 MapReduce 及 HDFS 都是必须的,但是如果有必要,依然可以只启动 HDFS 或者 MapReduce:

[test@localhost hadoop-1.0.4]$ bin/start-dfs.sh

[test@localhost hadoop-1.0.4]$ bin/start-mapred.sh

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-07/120247p2.htm

(二)  第 2 步:上传模拟数据文件夹。

为了运行程序,我们需要一个输入的文件夹,和输出的文件夹。

在本地新建 word.txt

java c++ python c

java c++ javascript

helloworld Hadoop

mapreduce java hadoop hbase

通过 hadoop 的命令在 HDFS 上创建 /tmp/workcount 目录,命令如下:

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -mkdir /tmp/wordcount/

通过 copyFromLocal 命令把本地的 word.txt 复制到 HDFS 上,命令如下:

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -copyFromLocal /tmp/word.txt  /tmp/wordcount/word.txt

/tmp/word.txt 是本地创建 txt 文件的路径,/tmp/wordcount/word.txt 是 HDFS 上的路径。

(三)  第 3 步:运行项目

在新建的项目 WordCount,点击 WordCount.java,右键 –>Run As–>Run Configurations

在弹出的 Run Configurations 对话框中,点 Java Application,右键 –>New,这时会新建一个 application 名为 WordCount

配置运行参数,点 Arguments,在 Program arguments 中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如:

hdfs://localhost:9000/tmp/wordcount/word.txt  hdfs:// localhost:9000/tmp/wordcount/out

如果运行时报 java.lang.OutOfMemoryError: Java heap space 配置 VM arguments(在 Program arguments 下)

-Xms512m -Xmx1024m -XX:MaxPermSize=256m

在 Linux 下安装与配置 Hadoop

点击 Run,运行程序。

点击 Run,运行程序,过段时间将运行完成,等运行结束后,查看运行结果,使用命令:

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -ls /tmp/wordcount/out

Found 2 items

-rw-r–r–  3 test supergroup          0 2012-11-01 11:32 /tmp/wordcount/out/_SUCCESS

-rw-r–r–  3 test supergroup        81 2012-11-01 11:32 /tmp/wordcount/out/part-r-00000

查看例子的输出结果,发现有两个文件,使用命令查看 part-r-00000 文件,可以查看运行结果。

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000

c      1

c++    2

hadoop  2

hbase  1

helloworld      1

java    3

javascript      1

mapreduce      1

python  1

删除到运行结果:

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -rmr /tmp/wordcount/out

Deleted hdfs://localhost:9000/tmp/wordcount/out

再次 Run 程序后查看结果:

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -ls /tmp/wordcount/out

Found 2 items

-rw-r–r–  3 test supergroup          0 2012-11-01 11:37 /tmp/wordcount/out/_SUCCESS

-rw-r–r–  3 test supergroup        81 2012-11-01 11:37 /tmp/wordcount/out/part-r-00000

[test@localhost hadoop-1.0.4]$ bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000

c      1

c++    2

hadoop  2

hbase  1

helloworld      1

java    3

javascript      1

mapreduce      1

python  1

5  Hadoop 包介绍
Hadoop API 被分成如下几种主要的包(package):

org.apache.hadoop.conf

定义了系统参数的配置文件处理 API

org.apache.hadoop.fs

定义了抽象的文件系统 API

org.apache.hadoop.dfs

Hadoop 分布式文件系统(HDFS)模块的实现

org.apache.hadoop.io

定义了通用的 I /O API,用于针对网络,数据库,文件等数据对象做读写操作

org.apache.hadoop.ipc

用于网络服务端和客户端的工具,封装了网络异步 I / O 的基础模块

org.apache.hadoop.mapred

Hadoop 分布式计算系统(MapReduce)模块的实现,包括任务的分发调度等

org.apache.hadoop.metrics

定义了用于性能统计信息的 API,主要用于 mapred 和 dfs 模块

org.apache.hadoop.record

定义了针对记录的 I /O API 类以及一个记录描述语言翻译器,用于简化将记录序列化成语言中性的格式(language-neutral manner)

org.apache.hadoop.tools

定义了一些通用的工具

org.apache.hadoop.util

定义了一些公用的 API

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120247.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计21893字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7987749
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...