Hadoop入门
一、Hadoop的安装和配置
(一)Hadoop基础环境的配置
1.0 前置操作:为我创建的普通用户获得root权限
操作方法如下:
- 切换到管理员用户,右上角log out,登录root用户,进入界面
- 命令行打开:
/etc/sudoers
chmod u+w /etc/sudoers
vim /etc/sudoers
或者从图形界面打开/etc/sudoers
复制第98行:
root ALL=(ALL) ALL
在第99行复制并更改用户名:
user(自己的用户名) ALL=(ALL) ALL
- 被认可的用户使用特权命令时,需要在特权命令前加上sudo
1.1基础网络环境
1.1.1先配置网络连通
在图形界面中,打开网络连接的有线设置->齿轮->ipv4->地址选择手动,填写网络信息就可以了。
【注】网络信息必须符合网络规则(编辑中有虚拟网络编辑器)
在命令行中,打开文件后,将以下配置进行更改
BOOTPROTO=static
ONBOOT=yes
添加以下配置
IPADDR=192.168.218.10
NETMASK=255.255.255.0
GATEWAY=192.168.218.2
DNS1=8.8.8.8
最后,重启网络
sudo service network restart
1.1.2配置网络地址与主机名的对应关系(可选)
sudo vim /etc/hostname
将此文件内容全部删除,更改为你的当前操作主机的主机名
sudo vim /etc/hosts
在最后新建一行,添加以下内容
IP地址1 主机名1
IP地址2 主机名2
IP地址3 主机名3
1.1.3关闭防火墙
查看防火墙状态
systemctl status firewalld.service
这里开始默认是开启的,我已经给关掉了,具体操作如下:
关闭防火墙
systemctl stop firewalld.service
查看服务开启启动项列表
systemctl list-unit-files
设置防火墙开机不自动启动
systemctl disable firewalld.service
1.2 ssh免密登陆
首先生成公私钥
ssh-keygen -t rsa
打开用户目录下的.ssh目录
Cd .ssh
会发现两个文件:id_rsa 和 id_rsa.pub
cp id_rsa.pub authorized_keys
将公钥文件拷贝成authorized_keys
最后可以验证一下有没有配置成功
ssh 本机主机名
如果不需要输入密码可直接登录就说明设置成功
然后exit退出即可。
1.3 JDK的安装
1、首先复制jdk文件(.tar.gz格式)到用户目录下,在此目录下新建java目录。
2、将安装包移动到该目录下解压。
tar zxvf 压缩包名
3、解压后为了方便后期操作,将解压后目录名重命名为jdk(使用mv改名)
4、卸载已经安装好的JDK(可选项)
① 查询当前安装好的JDK包名
rpm -qa | grep jdk
② 卸载方法
rpm -e 包名 --nodeps(忽略依赖关系)
③ 使用java -version命令验证
④ 此时已经没有java的环境变量了,因为都卸载完了,下一步就是给自己安装好的JDK配置环境变量。
5、配置JDK的环境变量
① 打开并编辑用户目录下的.\bashrc文件
vim ~/.bashrc
② 在正文的后面添加以下内容
export JAVA_HOME=/home/ryan/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
③ 保存退出,让该文件立即生效
source ~/.bashrc
现在环境变量配置好了,再输入java -version查看
如果显示版本号与安装版本号相同,则证明安装成功了
(二)Hadoop的安装
首先将hadoop安装包复制到用户目录下,新建hadoop目录。将安装包移动到该目录下解压。
将解压完成后的目录(hadoop-2.6.2)改名为hadoop(为了方便)
将hadoop根目录下的bin目录和sbin目录路径加入到PATH中,更改~/.bashrc文件如下
export JAVA_HOME=/home/用户名/java/jdk
export HADOOP_HOME=/home/用户名/hadoop/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(三)Hadoop配置
3.1文件配置
在$HADOOP_HOME/etc/hadoop/目录下,需要配置以下文件
vim hadoop-env.sh
export JAVA_HOME=/home/ryan/java/jdk
vim yarn-env.sh
export JAVA_HOME=/home/ryan/java/jdk
vim core-site.xml
在configuration标签中添加以下变量和值
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ryan/hadoop/hadoop/tmp</value>
</property>
vim hdfs-site.xml(可以不做配置)
*<property>(如果不设置该参数,则默认值为3)
<name>dfs.replication</name>
<value> 2</value>
</property>
<property>(如果不设置该参数,则默认值为$hadoop.tmp.dir/dfs/name)
<name>dfs.namenode.name.dir</name>
<value>/home/ryan/hadoop/hadoop/tmp/dfs/name </value>
</property>
<property>(如果不设置该参数,则默认值为$hadoop.tmp.dir/dfs/data)
<name>dfs.datanode.data.dir</name>
<value> /home/ryan/hadoop/hadoop/tmp/dfs/data </value>
</property>*
vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vim yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>rmhostname:8032 </value>
</property>
我在写的时候写成了8033,导致了resourcemanager没有开起来,可以按照下面的排错方法进行检查。
vim slaves
在此文件中写明所有从节点的节点名,一行一个(如果为伪分布式部署,则默认localhost即可,无需更改,如果是真分布式再进行修改)
把里面的localhost删掉,写上,
node-2
node-3
3.2格式化并启动hadoop
3.3根据运行日志定位问题点
哪个守护进程异常了,就去看一看对应的日志,来排错
(四)分布式安装
先克隆两个节点,node-2和node-3
进入HADOOP_HOME中进行slaves文件的配置
然后把node2和node3的主机名都分别改成node-2和node-3
重新生成公私钥
别忘记更改IP地址
把node-2和node-3的公钥都拷贝到node-1的/etc/home/.ssh下面
来到node-1
把authorized_keys复制到node-2和node-3中,这样就实现了三者互相的ssh免密登录
然后就可以开启全部服务
在node-1主节点中用jps查看开启的服务
从节点node-2
从节点node-3
这样就完成了分布式的安装。