我的环境是centos7桌面版,图片中打码的是用本人名字做的用户名
一.基础环境配置
普通用户获取部分管理员权限
因为实际生产中都用普通用户操作,但普通用户的权限不够,所以需要普通用户获取管理员权限后在普通用户上进行操作
进入普通用户,右键打开终端
要获得权限,需要修改sudoers文件,但这个文件一般是只读,所以我们需要修改一下
首先右键打开终端,可以看见此时是普通用户状态,所以输入su root用来登录管理员用户,输入密码,进入root状态
输入cd /etc,回车进入etc目录下
输入ll sudoers,回车,可以看到此时sudoers文件状态为只读
输入命令chmod 640 sudoers,回车,修改文件由只读变为可编辑
输入ll sudoers,回车,可以看到文件已经被修改成了可读可写
此时我们就可以编辑sudoers文件用来获取管理员权限啦
输入vi sudoers打开sudoers文件
找到第98行 root ALL=(ALL) ALL
将其复制,并更改为 你的用户名 ALL=(ALL) ALL
保存退出:按esc,输入:wq
到这一步,用户就获取了所有的管理员权限,执行管理员命令时,需要在前面加上sudo命令。
基础网络配置
网络联通配置
情况一:机房电脑有线配置(老师讲解版,我的是笔记本没用这个)
打开网络配置文件cd /etc/sysconfig/network-scripts/
进入后ls查看
编辑ifcfg那个文件,
在此文件中更改以下内容
BOOTPROTO=static
ONBOOT=yes
在此文件中添加以下内容
IPADDR=192.168.237.10
NETMASK=255.255.255.0
GATEWAY=192.168.237.2
DNS1=8.8.8.8
按esc后输入:wq保存退出
然后重启网络,输入service network restart
测试
ping 8.8.8.8
情况二:个人笔记本
我电脑是苹果,然后centos7的虚拟机,要联网只需要打开网络有线就可以,此时如果你的主机连了网,那么你的虚拟机也会联网。
如果显示已拔出之类的,看看你的主机服务里是不是关闭着虚拟机的服务,如果关着启动就好了
配置网络地址与主机名的对应关系(可选)
sudo vim /etc/hostname
将此文件内容全部删除,更改为你的当前操作主机的主机名,比如我的主机名是NODE1
sudo vim /etc/hosts
在最后新建一行,添加以下内容
IP地址1 主机名1
IP地址2 主机名2
IP地址3 主机名3
ip地址笔记本是自动分配的,在有线设置里可以看到,对应到主机名填写(NODE2和NODE3的IP地址是在后面建立分布式的时候用的,现在随便写,到时候再改正成自动分配的IP地址也是可以的)
关闭防火墙
查看防火墙状态
systemctl status firewalld.service
关闭防火墙
systemctl strop firewalld.service
查看服务开启启动项列表
systemctl list-unit-files
设置防火墙开机不自动启动
systemctl disable firewalld.service
1.2免密登录
首先生成公私钥
ssh-keygen -t rsa
打开用户目录下的.ssh目录
cd
cd .ssh
将公钥文件拷贝成authorized_keys
cp id_rsa.pub authorized_keys
验证
Ssh 本节点主机名,若无需输入密码可直接登录则设置成功
jdk安装
我用的jdk版本为jdk-7u79-linux-x64.tar.gz,大家可以自己下载
复制jdk文件(.tar.gz格式)到用户目录下
在此目录下新建java目录,将安装包移动到该目录下解压
tar zxvf 压缩包名
解压后为了方便后期操作,将解压后目录名重命名为jdk(使用mv改名)
打开并编辑用户目录下的.\bashrc文件
vim ~/.bashrc
在正文的后面添加以下内容
Export JAVA_HOME=/home/用户名/java/jdk
Export PATH=$PATH:$JAVA_HOME/bin
保存退出
让该文件立即生效
source ~/.bashrc
卸载已有jdk(可选)
查询已安装包名中包含jdk的
rpm -qa |grep jdk
卸载方法
rpm -e 包名 --nodeps(忽略依赖关系)
使用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
改完后,执行source命令令其立即生效
使用hadoop version验证是否成功
三.hadoop的配置
在$HADOOP_HOME/etc/hadoop/目录下
需要配置以下文件
文件1: hadoop-env.sh
export JAVA_HOME=/home/用户名/java/jdk
文件2:yarn-env.sh
export JAVA_HOME=/home/用户名/java/jdk
文件3:core-site.xml
在configuration标签中添加以下变量和值
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/用户名/hadoop/hadoop/tmp</value>
</property>
文件4:hdfs-site.xml
<property>(如果不设置该参数,则默认值为3)
<name>dfs.replication</name>
<value> 3</value>
</property>
这下面的可以不用写
<property>(如果不设置该参数,则默认值为$hadoop.tmp.dir/dfs/name)
<name>dfs.namenode.name.dir</name>
<value>/home/用户名/hadoop/hadoop/tmp/dfs/name </value>
</property>
<property>(如果不设置该参数,则默认值为$hadoop.tmp.dir/dfs/data)
<name>dfs.datanode.data.dir</name>
<value> /home/用户名/hadoop/hadoop/tmp/dfs/data </value>
</property>
文件4:Mapred-site.xml(这个没有,但有一个同名.template文件,复制他并去掉.template)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
文件5:Yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>rmhostname:8032 </value>
</property>
Slaves
在此文件中写明所有从节点的节点名,一行一个(如果为伪分布式部署,则默认localhost即可,无需更改)
格式化并启动hadoop
hadoop namenode -format
如果有问题可以根据运行日志定位问题点解决问题
分布式的安装
关闭虚拟机,建立2个带链接的克隆,并将其改名为NODE2,NODE3,配置大同小异,IP地址等要查看后在NODE1里改正
分布式详情:NODE1,NODE2,NODE3都分别在命令行ssh-keygen -t rsa,
NODE2,NODE3同理
登录其他主机,将其他主机的公钥文件内容都拷贝到hadoop01主机上的authorized_keys文件中
登录NODE2:ssh-copy-id -i NODE1
登录NODE3:ssh-copy-id -i NODE1
登录NODE1:scp authorized_keys路径
NODE2:路径/.ssh/
scp authorized_keys路径
NODE3:路径/.ssh/