基于虚拟机的hadoop分布式集群搭建(搭建成功)

mac2024-11-09  10

文章目录

1. 安装VMware、安装ubuntu16.042. 安装vim和ssh3. 修改hostname4. 修改hosts5. 安装jdk6. 安装hadoop7. 克隆8. 配置ssh,实现免密码登录9. 修改hadoop基本配置10. 启动测试11.运行计算实例P.S.遇到的问题 【正式安装】

1. 安装VMware、安装ubuntu16.04

网上很多教程,这里不详述 注意事项:

(1)安装顺序:虚拟机节点先安装一个,完成基本配置后通过“克隆”的方式复制另外两个,这样既可以保证环境统一,又比较方便。

(2)网络连接:选择NAT方式。建议最好手动把IP地址固定下来,避免动态分配的时候错乱。

(3)防火墙:关闭防火墙,避免出现后面不必要的麻烦,chkconfig iptables off。

2. 安装vim和ssh

(1)安装vim

sudo apt-get install vim

(2)安装ssh

apt-get install openssh-server

PS:可以通过service ssh status 查看ssh状态。

3. 修改hostname

vim /etc/hostname

修改HOSTNAME的值为master。

4. 修改hosts

无论虚拟机suspend还是暂停, 每次机器重启后ip都会自动+1, 而且开机刚进入虚拟机时ip不变, 是过一会儿才自动变化的.

所以需要固定IP

vi /etc/hosts 127.0.0.1 localhost 192.168.190.131 master 192.168.190.132 slave01 192.168.190.133 slave02 192.168.190.134 slave03

5. 安装jdk

(1)解压:

tar -zxvf jdk1.7.0_79.tar /usr/lib/java [可以替换成你安装的路径]

(2)修改环境变量:

vim /etc/profile

在最下面添加:

export JAVA_HOME=/usr/lib/java/jdk-13.0.1 export PATH=$JAVA_HOME/bin:$PATH

修改完后,让配置文件生效:

source /etc/profile

6. 安装hadoop

(1)解压:

tar -zxvf hadoop-2.6.5.tar.gz /opt/ [可以替换成你安装的路径]

(2)修改环境变量

vim /etc/profile

在最下面添加:

export HADOOP_HOME=/opt/hadoop-2.6.5 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

修改完后,让配置文件生效:

source /etc/profile

7. 克隆

通过VMware克隆另外两个节点出来,参照4中的配置修改IP地址和hostname。(不要链接克隆,选择完整克隆)

8. 配置ssh,实现免密码登录

(1)在三台机器上分别执行如下命令,一路按回车即可。

ssh-keygen -t rsa

(2)刚生成的文件保存在~/.ssh/下,进入命令

cd /home/eric/.ssh

进入.ssh隐藏文件夹内,输入ls可以看到id_rsa,私钥和id_rsa.pub,公钥,复制公钥到authorized_keys

cp id_rsa.pub authorized_keys

(3)做ssh认证

将master公钥追加到slave01的authorized_keys里面, 使master免登陆进入slave01

scp eric@master:/home/eric/.ssh/id_rsa.pub ./master.rsa.pub cat master.rsa.pub >> authorized_keys

将slave01公钥追加到master的authorized_keys里面,使slave01免登陆进入master

scp eric@slave01:/home/eric/.ssh/id_rsa.pub ./slave01.rsa.pub cat slave01.rsa.pub >> authorized_keys

slave02同理

如果遇到仍然需要密码的情况执行以下操作:

(一)修改文件"authorized_keys"权限

chmod 600 ~/.ssh/authorized_keys

(二)设置SSH配置

sudo vim /etc/ssh/sshd_config

在末尾添加一下文本

RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

(三)重启

service sshd restart

建议:最好是三台都互相免密码登录,不只是从master到另外两台。

(4)测试:

本地测试环路

ssh localhost

出现Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)即可

ssh slave01

看是否不用密码就可以登录过去,直接进入,表示成功。

(5)常用命令

/etc/init.d/ssh start /etc/init.d/ssh restart /etc/init.d/ssh stop

9. 修改hadoop基本配置

我用的是hadoop-2.6.5,其实配置大同小异。

在hadoop安装路径下新建文件夹,我的位置在/opt/hadoop-2.6.5/

mkdir dfs mkdir dfs/name mkdir dfs/data mkdir tmp

转到配置路径下

cd /opt/hadoop-2.6.5/etc/hadoop/

(1)配置文件:core-site.xml

在<configuration></configuration>里添加如下内容:

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop-2.6.5/temp</value> <description>Abase for other temporary directories.</description> </property> </configuration>

(2)配置文件:hdfs-site.xml

<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop-2.6.5/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop-2.6.5/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>

(3)配置文件:mapred-site.xml

现在当前目录下执行

cp mapred-site.xml.template mapred-site.xml

得到mapred-site.xml,进行配置

<configuration> <property>       <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>

(4)配置文件:yarn-site.xml

<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>

(5)配置文件:slaves

将内容替换为节点名称

slave01 slave02

(6)vim masters

创建masters,加入主机名称

master

(7)配置文件:yarn-env.sh

找到# export JAVA_HOME=/home/y/libexec/jdk1.6.0/(一个被注释掉的语句) 取消注释,并将路径修改成你存放jdk的位置。

(8)配置文件:hadoop-env.sh

同(7)中一样,修改export JAVA_HOME的路径。

(9)同步配置到子节点

scp /opt/hadoop2.6.5/etc/hadoop/* slave01:/opt/hadoop/etc/hadoop/ scp /opt/hadoop2.6.5/etc/hadoop/* slave02:/opt/hadoop/etc/hadoop/

格式为scp 主机hadoop路径/* 子结点名称: 子结点hadoop路径

至此配置设置完成了!

10. 启动测试

(1)格式化节点

在主机上输入

hadoop namenode -format

注意:只要出现“successfully formatted”就表示成功了。

(2)运行集群

直接在主机输入

/opt/hadoop-2.6.5/sbin/start-all.sh /opt/hadoop-2.6.5/sbin/stop-all.sh(关闭集群)

如果没有报错出现ERROR,则可以用jps检验各后台进程是否成功启动。

master

eric@master:~$ jps 4640 NameNode 3200 NameNode 4850 SecondaryNameNode 3732 ResourceManager 5860 Jps

slave01

3168 DataNode 3563 Jps 3311 NodeManager

此时说明集群运行正常。

(3)通过网站查看集群情况

在网址输入 https://master的ip:50070

http://192.168.190.128:8088/cluster/

11.运行计算实例

(1)准备数据

在本地目录创建wordcount.txt文件,并随便输入写英文,如:

aa bb cc dd

(2)上传文件

在hadoop中新建文件夹:

hadoop fs -mkdir /input/ hadoop fs -mkdir /output/ hadoop fs -rm -r -skipTrash /data/wordcount (删除语句)

查看hadoop的文件夹,在终端下直接是查看不到的

hadoop fs -ls -R /

上传文件到hdfs的文件夹/input/wordcount/下

hadoop fs -put /home/wordcount.txt /input/wordcount

(3)执行命令(也可以在jar所在文件目录下操作)

hadoop jar /opt/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input/wordcount/ /output/wordcount/

格式为:hadoop jar jar包 处理文件名 输入文件夹 输出文件夹

将出现这样的日志 (4)查看文件

去输出文件中查看结果,output/wordcount里面会有三个文件,有一个带part的就是输出结果,可以使用hadoop fs -cat 输出文件的路径查看结果

P.S.遇到的问题

(1)启动hadoop后会出现JAVA ERROR

JAVA_HOME路径配置不对或者没有配置

(2)在子节点输入jps时出现 “程序 ‘jps’ 已包含在下列软件包中” ,则在终端输入一下语句,注意jdk路径后面的/bin/jps 1不要漏掉

sudo update-alternatives --install /usr/bin/jps jps "你的jdk路径"/bin/jps 1

(3)无法登陆网页查看集群

点名感谢这位哥们的解决方法,给我看笑了,瞬间解决我的问题

最新回复(0)