Hadoop单机与伪分布式环境(CentOS)
目录
环境准备
-
环境准备
CentOS 7 64位 、Hadoop2.7.2、jdk1.8
这里使用的是虚拟机安装CentOS 7 系统进行环境搭建。
-
下载地址
可以通过官网自行下载
- Hadoop 2.7.2 https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
- jdk1.8 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
CentOS 配置
虚拟机安装好之后设置网络连接方式为NAT,设置静态IP,并且关闭防火墙。或者也可以设置网络连接方式为桥接方式,但之后的Hadoop分布式集群搭建也会使用NAT模式。
首先来进行一些系统的设置。
创建用户并设置root权限
- 创建用户ht
$ su # 以 root 用户登录
$ useradd -m ht -s /bin/bash # 创建新用户ht
$ passwd ht // 修改密码
- 赋予ht 用户root的权限
要赋予权限,先把当前用户切换为 root。
首先要知道系统中存放sudoer的目录位置,使用如下命令:
$ whereis sudoers
得到结果:
使用ls -l
查看root用户对sudoers文件的权限,发现是只读权限,就增加写的权限。
增加写权限:
$ chmod -v u+w /etc/sudoers
然后执行以下命令:
$ vim /etc/sudoers
第100行,可以先按一下键盘上的 ESC 键,然后输入:100 (按一下冒号,接着输入100,再按回车键)。添加如下一行内容到文件中:
[你的普通用户名] ALL=(ALL) ALL
如图:
然后收回root用户对sudoers文件的写权限:
$ chmod -v u-w /etc/sudoers
上面已经修改了用户的权限,现在我们使用su
命令登录该用户。
$ su ht
修改主机名
通过hostnamectl set-hostname [新的主机名]
可以永久修改主机名:
[ht@localhost ~]$ hostnamectl set-hostname hadoop100
[ht@localhost ~]$ hostname
hadoop100
然后修改 /etc/hosts,配置主机名到IP地址的映射:
[ht@localhost ~]$ sudo vim /etc/hosts
新增以下内容,如图:
192.168.137.100 hadoop100
最后重启机器。
【/etc/hosts 和/etc/hostname的区别】
hostname是主机名,用来标识你的机器
/etc/hosts功能相当于DNS,记录IP到主机名/域名的映射,Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。
hosts文件格式是一行一条记录,分别是
IP hostname aliases
,三者用空白字符分隔,aliases可选。127.0.0.1 到 localhost 这一条建议不要修改,很多应用程序会用到这个。
安装SSH、配置SSH免密登陆
先使用以下命令查看一下系统中是否安装了SSH:
[ht@hadoop100 ~]$ rpm -qa | grep ssh
openssh-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
可以看到ssh-server与ssh-clients已经安装好了,就不需要再安装。
若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):
sudo yum install openssh-clients sudo yum install openssh-server
接着使用以下命令来登录SSH(相当于远程登录到本机):
[ht@hadoop100 ~]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is xxx(马赛克).
ECDSA key fingerprint is xxx(马赛克).
Are you sure you want to continue connecting (yes/no)? yes # 输入yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ht@localhost's password:
Last login: Wed Dec 2 18:17:17 2020
但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
退出远程登录:
[ht@hadoop100 ~]$ exit
logout
Connection to localhost closed.
配置SSH免密登录:
[ht@hadoop100 ~]$ cd .ssh/
[ht@hadoop100 .ssh]$ ssh-keygen -t rsa #生成密钥对的时候,一直按回车即可
[ht@hadoop100 .ssh]$ cat id_rsa.pub >> authorized_keys
[ht@hadoop100 .ssh]$ chmod 600 authorized_keys
[ht@hadoop100 .ssh]$ ssh localhost #测试看看登录是否不用密码了
Last login: Thu Dec 3 08:18:47 2020 from localhost
注:上述命令中,修改了公钥文件id_rsa.pub的权限,这样用户ht才能读取公钥。
[ht@hadoop100 .ssh]$ ll id_rsa.pub
-rw-r--r--. 1 ht ht 394 Dec 3 08:16 id_rsa.pub
安装JDK
1.先检查系统中是否已经安装jdk:
[ht@hadoop100 ~]$ rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
tzdata-java-2019c-1.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
如果是则先卸载:
[ht@hadoop100 ~]$ sudo yum -y remove java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
2.创建以下目录用于安装:
[ht@hadoop100 opt]$ sudo mkdir module
[ht@hadoop100 opt]$ sudo mkdir software
修改module与software目录的权限:
[ht@hadoop100 opt]$ sudo chown ht:ht module/ software/
安装jdk:
[ht@hadoop100 ~]$ cd /opt/software/
[ht@hadoop100 software]$ tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/module/
3.配置java环境变量
打开配置文件:
[ht@hadoop100 ~]$ sudo vim /etc/profile
添加如下内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_162
export PATH=$PATH:$JAVA_HOME/bin
使之生效:
[ht@hadoop100 ~]$ source /etc/profile
查看是否安装成功,如出现以下提示就是安装成功了:
[ht@hadoop100 ~]$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
Hadoop单机配置
Hadoop安装后默认为单机环境。
-
安装Hadoop
[ht@hadoop100 ~]$ cd /opt/software/ [ht@hadoop100 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
-
配置环境变量
[ht@hadoop100 ~]$ sudo vim /etc/profile [sudo] password for ht:
添加以下内容:
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
保存退出,使配置文件生效:
[ht@hadoop100 ~]$ source /etc/profile
查看Hadoop环境变量是否配置成功:
[ht@hadoop100 ShareData_CentOS]$ hadoop version Hadoop 2.7.2 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41 Compiled by jenkins on 2016-01-26T00:08Z Compiled with protoc 2.5.0 From source with checksum d0fda26633fa762bff87ec759ebe689c This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
运行WordCount案例
[ht@hadoop100 hadoop-2.7.2]$ mkdir wcinput
[ht@hadoop100 hadoop-2.7.2]$ cd wcinput/
[ht@hadoop100 wcinput]$ touch wc.input
[ht@hadoop100 wcinput]$ vim wc.input
输入几个词:
[ht@hadoop100 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
[ht@hadoop100 hadoop-2.7.2]$ cat wcoutput/part-r-00000 #查看运行结果
查看结果:
注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 output文件删除。
Hadoop伪分布式配置
接下来,要分别修改这3个配置文件。
[ht@hadoop100 hadoop]$ vim hadoop-env.sh
[ht@hadoop100 hadoop]$ vim core-site.xml
[ht@hadoop100 hadoop]$ vim hdfs-site.xml
-
hadoop-env.sh
打开hadoop-env.sh文件,定位到这一行,我们需要修改java的路径。
修改为:
export JAVA_HOME=/opt/module/jdk1.8.0_162
保存并退出。
-
core-site.xml
将以下配置添加进去,然后保存退出:
<!-- HDFS: Address of NameNode --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop100:9000</value> </property> <!-- to save output files when Hadoop runs --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
-
hdfs-site.xml
添加以下配置:
<!-- HDFS:the number of replication --> <property> <name>dfs.replication</name> <value>1</value> </property>
-
格式化namenode
配置了hadoop环境变量的,可以在任何目录下执行hdfs命令。
[ht@hadoop100 hadoop-2.7.2]$ hdfs namenode -format
格式化成功。注意:格式化只需要一次。
-
启动伪分布式集群
启动namenode
[ht@hadoop100 hadoop-2.7.2]$ hadoop-daemon.sh start namenode starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-ht-namenode-hadoop100.out
启动datanode
[ht@hadoop100 hadoop-2.7.2]$ hadoop-daemon.sh start datanode starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-ht-datanode-hadoop100.out
查看集群运行状态,输入
jps
命令: -
在web端查看集群状态
打开浏览器,访问:http://hadoop100:50070 或http://localhost:50070
参考
http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/ 厦大数据库实验室博客