linux centos single,@在 CentOS Linux 中安装 Hadoop-1.2.1 ( single-node cluster)

本文介绍如何在 CentOS7 中以伪分布式模式 ( Pseudo-Distributed Mode ) 运行 Hadoop-1.2.1。

前期准备

安装 Linux 系统

建议在虚拟机下安装 Linux 系统,并善用虚拟机的 snapshot 功能,可以节省很多时间。

安装 JDK1.8 并设置环境变量

Hadoop 的安装及配置

Hadoop 版本有很多,建议安装 hadoop.1.2.1 或 hadoop 的最新版本。本文以 hadoop-1.2.1 为例。另外,Hadoop Wiki 上有更系统更权威的资料。

step1:下载安装 Hadoop

# 切换到 root 身份

[zodas@localhost ~]$ su

# 将下载到桌面上的包 hadoop-1.2.1.tar.gz 拷贝到 /opt/installpackages 目录下

[root@localhost zodas]# cp ./Desktop/hadoop-1.2.1.tar.gz /opt/installpackages

# 切换工作目录到 /opt

[root@localhost zodas]# cd /opt

# 将 hadoop-1.2.1.tar.gz 解压到 /opt 目录下

[root@localhost opt]# tar -xvzf /opt/installpackages/hadoop-1.2.1.tar.gz

step2:修改环境变量 /etc/profile

打开终端输入vi /etc/profile,增加以下内容,配置 Hadoop 环境变量:# Hadoop

export HADOOP_HOME=/opt/hadoop-1.2.1

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

打开终端输入source /etc/profile,使新添加的环境变量立即生效

打开终端输入hadoop version,验证环境变量是否配置成功

注:由于是在 /etc/profile 中配置的环境变量,所以建议配置完后重启一次系统,让环境变量永久生效

step3:配置hadoop

Hadoop-1.2.1 的配置文件默认是放在其 conf/ 目录下,我们只需要配置其中的4个文件即可,分别是:hadoop-env.sh, core-site.xml, hdfs-site.xml, mapred-site.xml。

hadoop-env.sh

在该文件中我们只需要修改 JAVA_HOME 这一变量的值为 JDK 安装的真实路径即可,如果按照笔者的教程操作的话,JAVA_HOME=/opt/jdk1.8.0,修改内容如下:

Change hadoop-env.sh

# The java implementation to use. Required.

# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

to

# The java implementation to use. Required.

export JAVA_HOME=/opt/jdk1.8.0_131

conf/*-site.xml

conf/core-site.xom 修改为:

hadoop.tmp.dir

/usr/workspace/hadoop/hdfs/tmp

fs.default.name

hdfs://localhost:9000

conf/mapred-site.xml 修改为:

mapred.job.tracker

localhost:9001

conf/hdfs-site.xml 修改为:

dfs.replication

1

dfs.data.dir

/usr/workspace/hadoop/hdfs/data

dfs.name.dir

/usr/workspace/hadoop/hdfs/name

step4:修改 Hadoop 工作目录的 owner 和 group

建议创建一个新的群组,并将用户添加到该新群组中,否则,在 hadoop namenode -format 可能会报 Cannot create directory /usr/workspace/hadoop/hdfs/name/current 的错误,这是因为新创建的 workspace 目录其owner=root, group=root,所以 Hadoop 在 -format 无法自动创建需要的目录,解决办法是修改 workspace/hadoop/ 及其子目录的 owner 和 group。

创建一个新的群组hadoop(名字随意)# 创建一个新的群组 hadoop

[zodas@localhost ~]$ sudo groupadd hadoop

# 将用户 zodas 添加到新的群组中

[zodas@localhost ~]$ sudo usermod -G hadoop zodas

修改工作目录的权限[zodas@localhost ~]$ cd /usr

[zodas@localhost usr]$ sudo mkdir -p /usr/workspace/hadoop/hdfs

# 修改 workspace 目录及其子目录的 owner=zodas, group=hadoop

[zodas@localhost usr]$ sudo chown -R zodas:hadoop workspace/

# 修改 workspace 目录及其子目录的 权限为 rwxrwxr-x(即775)

[zodas@localhost usr]$ sudo chmod -R g+w workspace/

同上,修改 /opt/hadoop-1.2.1 的拥有者及群组为 zodas:hadoop[zodas@localhost ~]$ sudo chown -R zodas:hadoop /opt/hadoop-1.2.1

[zodas@localhost ~]$ sudo chmod -R g+x /opt/hadoop-1.2.1

step5:配置 SSH 免密码登录

不了解 SSH 的,可参考阮一峰的这篇博文"SSH原理与运用(一):远程登录"

CentOS 默认是已经安装了 OpenSSH的,可在终端中输入ssh -V,查看已安装的OpenSSH版本

使用 ssh-keygen 生成公私钥:# 生成公私钥。会在 ~/.ssh 目录下生成两个文件:id_rsa.pub 和 id_rsa

[zodas@localhost ~]$ ssh-keygen -t rsa -P ""

tips:-P 表示密码,-P "" 就表示空密码,也可以不用 -P 参数,这样就要三次回车,用 -P 就一次回车。

再输入下面的命令,将公钥传送到远程主机host上面:[zodas@localhost ~]$ ssh-copy-id zodas@localhost

好了,从此你再登录,就不需要输入密码了。

如果还是不行,就打开 /etc/ssh/sshd_config 这个文件,检查下面几行前面"#"注释是否取掉RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

重启远程主机的ssh服务。# ubuntu系统

service ssh restart

# debian系统

/etc/init.d/ssh restart

打开终端输入ssh zodas@localhost,若能不输入密码即可登录主机 localhost,则表示 SSH 免密码登录配置成功

另外,

Ubuntu 默认是没有安装 openssh-server,这也是为什么在/etc/ssh 目录下找不到 sshd_config 文件。解决方案执行sudo apt-get install openssh-server 安装 openssh-server

启动 Hadoop

Formatting the HDFS filesystem via the namenode

运行:

[zodas@localhost ~]hadoop namenode -format

输出类似于以下:

[zodas@localhost ~]$ hadoop namenode -format

Warning: $HADOOP_HOME is deprecated.

17/07/10 11:13:31 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = ./192.168.12.184

STARTUP_MSG: args = [-format]

STARTUP_MSG: version = 1.2.1

STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013

STARTUP_MSG: java = 1.8.0_131

************************************************************/

17/07/10 11:13:31 INFO util.GSet: Computing capacity for map BlocksMap

17/07/10 11:13:31 INFO util.GSet: VM type = 64-bit

17/07/10 11:13:31 INFO util.GSet: 2.0% max memory = 1013645312

17/07/10 11:13:31 INFO util.GSet: capacity = 2^21 = 2097152 entries

17/07/10 11:13:31 INFO util.GSet: recommended=2097152, actual=2097152

17/07/10 11:13:31 INFO namenode.FSNamesystem: fsOwner=zodas

17/07/10 11:13:31 INFO namenode.FSNamesystem: supergroup=supergroup

17/07/10 11:13:31 INFO namenode.FSNamesystem: isPermissionEnabled=true

17/07/10 11:13:31 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

17/07/10 11:13:31 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

17/07/10 11:13:31 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0

17/07/10 11:13:31 INFO namenode.NameNode: Caching file names occuring more than 10 times

17/07/10 11:13:32 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /usr/workspace/hadoop/hdfs/name/current

at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:294)

at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1337)

at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1356)

at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1261)

at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1467)

at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488)

17/07/10 11:13:32 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at ./192.168.12.184

************************************************************/

Starting single-node cluster

运行:

[zodas@localhost ~]$ start-all.sh

输出:

[zodas@ ~]$ start-all.sh

Warning: $HADOOP_HOME is deprecated.

starting namenode, logging to /opt/hadoop-1.2.1/libexec/../logs/hadoop-zodas-namenode-..out

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: starting datanode, logging to /opt/hadoop-1.2.1/libexec/../logs/hadoop-zodas-datanode-..out

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: starting secondarynamenode, logging to /opt/hadoop-1.2.1/libexec/../logs/hadoop-zodas-secondarynamenode-..out

starting jobtracker, logging to /opt/hadoop-1.2.1/libexec/../logs/hadoop-zodas-jobtracker-..out

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: starting tasktracker, logging to /opt/hadoop-1.2.1/libexec/../logs/hadoop-zodas-tasktracker-..out

用 jps 命令查看 java 进程,验证伪分布式集群是否安装成功

运行:

[zodas@localhost ~]$ jps

输出:

[zodas@localhost ~]$ jps

7431 Jps

7192 TaskTracker

6858 DataNode

6989 SecondaryNameNode

7069 JobTracker

6735 NameNode

Stoping single-node cluster

运行:

[zodas@localhost ~]$ stop-all.sh

输出:

[zodas@localhost ~]$ stop-all.sh

Warning: $HADOOP_HOME is deprecated.

stopping jobtracker

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: stopping tasktracker

stopping namenode

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: stopping datanode

localhost: Warning: $HADOOP_HOME is deprecated.

localhost:

localhost: stopping secondarynamenode

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值