一、安装hadoop前的准备工作
1.创建hadoop用户
$ sudo adduser hadoop
2.更新APT
$ sudo apt-get update
3.安装SSH
$ sudo apt-get install openssh-server
安装后,可以使用以下命令登录本机
$ ssh localhost
4.把用户加入授权
用exit退出刚才的SSH,回到原先的终端窗口,然后可以利用Keygen生成密匙,并将密匙加入到授权中。命令如下
$ cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -t rsa # 会有提示,按回车键即可
$ cat ./id_rsa.pub >> ./authorized_keys # 加入授权
5.安转Java环境
$ sudo apt-get install openjdk-8-jre openjdk-8-jdk
6.配置JAVA_HOME环境变量
$ sduo vim ~/.bashrc
在最前面单独添加一行
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
接下来要让环境变量立即生效,执行如下代码
$ source ~/.bashrc
执行完之后,经验一下是否设置正确
$ echo $JAVA_HOME
$ java -version
$
J
A
V
A
H
O
M
E
/
b
i
n
/
j
a
v
a
−
v
e
r
s
i
o
n
如
果
执
行
JAVA_HOME/bin/java -version 如果执行
JAVAHOME/bin/java−version如果执行JAVA_HOME/bin/java -version与直接执行java -version一样的结果则成功
二、安装Hadoop
1.下载hadoop
官网地址:https://hadoop.apache.org/releases.html
$ cd /usr/local
$ sudo wegt https://hadoop.apache.org/releases.html
$ cd /usr/local/ sudo mv ./hadoop-2.7.1/ ./hadoop
$ sudo chown -R hadoop ./hadoop
2.查看Hadoop是否可用、成功会显示版本信息
$ cd /usr/local/hadoop
$ ./bin/hadoop version
三、分布式模式配置
Hadoop集群的安转配置包括以下步骤。
(1)选定一台机器作为Master。
(2)在Master节点上创建hadoop用户,安转SSH服务端,安装java环境。
(3)在Master节点上安装Hadoop,并完成配置。
(4)在其他Slaver节点上创建Hadoop用户,安装服务端,安转Java环境。
(5)将Master节点上的/usr/local/hadoop目录复制到其他Slave节点上。
(6)在Master节点上开启Hadoop。
1.修改主机名(注:以下命令后面括号的内容代表该命令在相应的主机上执行)
$ sudo vim /etc/hostname (Master)
删除原来的主机名,改成Master。同样的,在Slave1主机上则改成Slave1
2.修改hosts文件
$ sudo vim /etc/hosts (Master)
在hosts文件中增加如下两条IP和主机名映射关系:
192.168.1.115 Master
192.168.1.129 Slave1
同样的方法修改Slave1的文件。
注意:一般hosts文件中只能有一个127.0.0.1,其对于主机名为localhost。如果有多余127.0.0.1映射,一个删除,特别是127.0.0.1 Master这样的映射记录,修改完之后重启Linux系统。
3.测试是否修改成功
$ ping Master -c 3 # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令
$ ping Slave1 -c 3
如果相互ping通的话就成功了。
4.SSH无密码登录节点
在Master节点执行以下命令
$ cd ~/.ssh # 如果没有该目录,先执行一次ssh $ localhost rm ./id_rsa* # 删除之前生成的公匙(如果已经存在)
$ ssh-keygen -t rsa # 执行该命令后,遇到提示信息,一直按回车就可以
$ cat ./id_rsa.pub >> ./authorized_keys
完成后用ssh Master命令来验证一下,测试成功后,执行exit命令返回原来的终端。
在Master上将公匙传输到Slaver节点:
$ scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
接着在Slaver1上执行以下命令:
$ mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub # 用完以后就可以删掉
5.检验是否配置成功
$ ssh Slave1 (Master)
如果无密码切换到Slaver用户则说明成功。(注:这时候你的用户可能处于Slaver1里面,可以通过su Master命令来切换回Master用户)
6.配置PATH变量
$ sudo vim ~/.bashrc
在里面增加以下内容:
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
保存后执行以下命令使配置生效:
$ source ~/.bashrc
7.配置集群分布式环境
以下文档均来自Master里面
(1)修改slavers文件中的localhost为Slave1
(2)修改core-site.xml
fs.defaultFS
hdfs://Master:9000
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
(3)修改hdfs-site.xml
因为本例中只有一个Slave节点,所以dfs.replication的值设置为1。
dfs.namenode.secondary.http-address
Master:50090
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
(4)修改mapred-site.xml
先把mapred-site.xml.template重命名为mapred-site.xml.
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
Master:10020
mapreduce.jobhistory.webapp.address
Master:19888
(5)修改yarn-site.xml
yarn.resourcemanager.hostname
Master
yarn.nodemanager.aux-services
mapreduce_shuffle
8.将hadoop文件复制到其他Slave节点上面
先在Master执行以下命令
$ cd /usr/local
$ sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
$ sudo rm -r ./hadoop/logs/* # 删除日志文件
$ tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
$ cd ~
$ scp ./hadoop.master.tar.gz Slave1:/home/hadoop
然后在Slave1节点执行如下命令
$ sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R hadoop /usr/local/hadoop
(注意:如果还有其他Slave节点,也要执行hadoop.master.tgz传输到Slave节点解压文件的操作)
9.启动Hadoop集群
首次启动Hadoop需要在Master节点上执行名称节点的格式化(只需要执行这一项,后面再次启动Hadoop时,不要再执行本次命令)
$ hdfs namenode -format
在Master上启动Hadoop
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
(注意:启动的时候一定要用hadoop用户启动,不同的用户下配置可能不同)
10.验证是否启动成功
$ jps
如果jps命令可以查看Master节点有NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer进程、在Slave节点上有DataNode和NodeManager进程则说明启动成功。
用$ hdfs dfsadmin -report查看数据节点是否正常启动,如果屏幕显示Live datanodes不为0,则说明启动成功。
也可以在Linux系统浏览器中输入http://master:50070来查看名称节点和数据节点的状态。
如果是windows系统,就把master换成相应的ip地址。例如http://192.168.1.115:50070
四、执行分布式示例
1.创建HDFS上的用户目录
$ hdfs dfs -mkdir -p /user/hadoop
然后在HDFS中创建一个input目录、并且把/usr/local/hadoop/etc/hadoop中的配置作为输入文件复制到input目录下:
$ hdfs dfs -mkdir input
$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/.xml input
2.运行MapReduce
$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar grep input output ‘dfs[a-z.]+’
执行过程可能会有点慢,但是如果迟迟没有进度,例如五分钟,没看到进度变化,不如重启Hadoop再次测试,若重启还不行,很可能是因为农村不足引起,建议增大虚拟机的内存,或者更改YARN的内存配置来解决。
在Linux系统浏览器中输入http://master:8080/cluster,通过web查看任务进度。
3.关闭Hadoop集群
在Master上执行如下命令
$ stop-yarn.sh
$ stop-dfs.sh
$ mr-jobhistory-daemon.sh stop historyserver
第六天:Hadoop集群搭建
最新推荐文章于 2022-12-27 14:36:35 发布