配置步骤:
1.关闭防火墙
2.设置静态IP
3.修改hostname
4.安装SSH并配置SSH免密码登录
5.CentOS启动FTP
6.安装JDK
7.安装Hadoop
一、关闭防火墙
CentOS 7中并没有安装我们熟悉的iptables,而是安装了firewalld、所以要把他换成iptables
1.首先关闭firewalld服务
systemctl stop firewalld
systemctl mask firewalld
systemctl disable firewalld
2.安装iptables
yum -y install iptables
3.清空iptables规则
vi /etc/sysconfig/iptables-config
这是他默认的配置:
# Load additional iptables modules (nat helpers)
# Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES=""
# Unload modules on restart and stop
# Value: yes|no, default: yes
# This option has to be 'yes' to get to a sane state for a firewall
# restart or stop. Only set to 'no' if there are problems unloading netfilter
# modules.
IPTABLES_MODULES_UNLOAD="yes"
# Save current firewall rules on stop.
# Value: yes|no, default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets stopped
# (e.g. on system shutdown).
IPTABLES_SAVE_ON_STOP="no"
# Save current firewall rules on restart.
# Value: yes|no, default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets
# restarted.
IPTABLES_SAVE_ON_RESTART="no"
# Save (and restore) rule and chain counter.
# Value: yes|no, default: no
# Save counters for rules and chains to /etc/sysconfig/iptables if
# 'service iptables save' is called or on stop or restart if SAVE_ON_STOP or
# SAVE_ON_RESTART is enabled.
IPTABLES_SAVE_COUNTER="no"
# Numeric status output
# Value: yes|no, default: yes
# Print IP addresses and port numbers in numeric format in the status output.
IPTABLES_STATUS_NUMERIC="yes"
# Verbose status output
# Value: yes|no, default: yes
# Print info about the number of packets and bytes plus the "input-" and
# "outputdevice" in the status output.
IPTABLES_STATUS_VERBOSE="no"
# Status output with numbered lines
# Value: yes|no, default: yes
# Print a counter/number for every rule in the status output.
IPTABLES_STATUS_LINENUMBERS="yes"
# Reload sysctl settings on start and restart
# Default: -none-
# Space separated list of sysctl items which are to be reloaded on start.
# List items will be matched by fgrep.
#IPTABLES_SYSCTL_LOAD_LIST=".nf_conntrack .bridge-nf"
先清除已有的规则、执行下列命令
iptables -F #清空所选链。这等于把所有规则一个个的删除。
iptables -X #删除指定的用户自定义链。
iptables -Z #把所有链的包及字节的计数器清空。
开放指定的端口
这个一般用于服务器,如允许常用的80(http端口),20、21(FTP端口),22(SSH端口),3306(MYSQL端口等)
vi /etc/sysconfig/iptables-config
在最下面添加以下规则
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p udp -m udp --dport 161 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT
4.开启iptables服务
systemctl enable iptables
systemctl start iptables
5.保存
service iptables save
service iptables restart
6.开机启动( 我这里提示:服务 iptables 信息读取出错:没有那个文件或目录)
chkconfig iptables on
二、设置静态IP
将虚拟机网络适配设置成为桥接模式,然后查看本机IP地址,ipconfig
记住ipv4地址和默认网关地址.切换到这个目录下,cd /etc/sysconfig/network-scripts
在CentOS下编辑ifcfg-enp0s8文件(不一定是ifcfg-enp0s8)
vi ifcfg-enp0s8
默认是这样的
上面中的NAME和DEVICE是enp0s8改错了个文件。
修改如下内容
HWADDR=08:00:27:40:e7:ee #通过ipconfig或ip addr查看
BOOTPROTO=”static” #dhcp改为static
ONBOOT=”yes” #开机启用本配置
IPADDR=192.168.249.163 #静态IP,前三位与主机的一致,例我的本地ip为: 192.168.249.160
GATEWAY=192.168.249.1 #默认网关(主机的默认网关地址)
NETMASK=255.255.255.0 #子网掩码
DNS1=8.8.8.8 #DNS 配置、谷歌的两个地址:8.8.8.8和8.8.4.4
DNS2=8.8.4.4
修改后
HWADDR=08:00:27:40:e7:ee
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s8
UUID=6ad10c12-8997-420a-a688-d13864923981
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.249.163
GATEWAY=192.168.249.1
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=8.8.4.4
重启下网络服务
service network restart
查看改动后的效果
ifconfig
三、修改hostname
在CentOS中,有三种定义的主机名: 静态的(static),瞬态的(transient),和灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如fendo)。
在CentOS 7中,有个叫hostnamectl或hostnamectl status的命令行工具,它允许你查看或修改与主机名相关的配置。
1.要查看主机名相关的设置:
hostnamectl或hostnamectl status
2.只查看静态、瞬态或灵活主机名,分别使用“--static”,“--transient”或“--pretty”选项。
hostnamectl --static
hostnamectl --transient
hostnamectl --pretty
3.要同时修改所有三个主机名:静态、瞬态和灵活主机名:
hostnamectl set-hostname fendo
hostnamectl --pretty
hostnamectl --static
hostnamectl --transient
4.修改hsots文件
vim /etc/hosts
4.重启CentOS 7 之后(reboot -f )
hostname 查看主机名修改成功
四、安装SSH并配置ssh免密码登录
一般默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此、如何检测ssh有没有安装呢?
可以在shell中输入ssh命令看看,如果没有提示命令找不到而是提示ssh命令的用法那么说明已经安装了ssh服务了。
如果确实没有安装,可以输入如下命令安装:
yum install ssh
1.启动ssh
service sshd start
2.设置开机运行
chkconfig sshd on
可以在本地输入
ssh 127.0.0.1
3.测试ssh是否可用
查看CentOS ip
然后打开SecureCRT新建连接
新建完成后,点击连接就会出现下面的界面
点击同意并保存,就会要你输入密码
点击OK就连接成功了.接下来配置SSH免密码登录
Hadoop需要通过SSH来启动Slave节点的守护进程,即使安装伪分布式也需要SSH。
除了ssh外还需要rsync服务,rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。
判断ssh和rsync有没有安装
rpm -qa | grep openssh
rpm -qa | grep rsync
如果没有安装使用以下命令安装
yum install ssh 安装SSH协议
yum install rsync
安装好以后配置免密码登录。使用普通用户登录CentOS。进入用户的home目录,执行如下命令
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(ssh-keygen表示生成密钥;-t指定密钥类型;-P 提供密语;-f生成的密钥文件)
这条语句表示生成了一个无密码密钥对,此时目录下会生成
id_rsa和id_rsa.pub两个文件,前者是私钥,后者是公钥
将公钥追加到授权key中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将授权key文件权限改为600(rr-------)
chmod 600 ~/.ssh/authorized_keys
切换到root用户,修改ssh配置文件
去掉这三个的注释
退出root用户,验证是否可以免密码登陆
ssh localhost\
出现这样的信息,表示SSH免密码登录配置成功。
提示:第一次连接的时候可能会提示是否要连接,输入yes即可。
五、CentOS启动FTP
1.安装vsftpd组件,安装完后,有/etc/vsftpd/vsftpd.conf 文件,用来配置,还有新建了一个ftp用户和ftp的组,指向home目录为/var/ftp,默认是nologin(不能登录系统)
yum -y install vsftpd
可以用下面命令查看用户
cat /etc/passwd
默认ftp服务是没有启动的,用下面命令启动
service vsftpd start
2.安装ftp客户端组件(用来验证是否vsftpd)
yum -y install ftp
执行命令尝试登录
ftp localhost
输入用户名ftp,密码随便(因为默认是允许匿名的)
登录成功,就代表ftp服务可用了。
但是,外网是访问不了的,所以还要继续配置。
3.取消匿名登陆
vi /etc/vsftpd/vsftpd.conf
把第一行的 anonymous_enable=YES ,改为NO
重启
service vsftpd restart
4.新建一个用户(fendo为用户名,随便就可以)
useradd fendo
修改密码(输入两次)
passwd fendo
这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为 /home/fendo
5.开放21端口
因为ftp默认的端口为21,而centos默认是没有开启的,所以要修改iptables文件,在上面我已经修改好了
vi /etc/sysconfig/iptables-config
没有的修改的话,在行上面有xx -j ACCEPT 下面另起一行输入跟那行差不多的,只是把xx换成21,然后:wq保存。
还要运行下,重启iptables
service iptables restart
外网是可以访问上去了,可是发现没法返回目录,也上传不了,因为selinux作怪了。
6.修改selinux
getsebool -a | grep ftp
执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问
只要把上面都变成on就行
执行
setsebool -P ftpd_full_access 1
setsebool -P ftp_home_dir 1
再重启一下vsftpd
service vsftpd restart
7.测试是否可以连接
ftp工具使用的是FlashFXP,打开该工具新建连接
点击连接.
连接成功.
五、安装JDK
下载JDK1.7压缩包(gz)或者安装文件(rpm)。我下载的是这个版本:jdk-7u79-linux-x64.gz
在/usr目录下新建Java目录
sudo mkdir java
使用ftp工具将下载的jdk压缩包上传到CentOS中
上传好以后解压到usr/java目录下
tar -zxvf ./jdk-7u79-linux-x64.gz -C /usr/java
配置环境变量
vi /home/fendo/.bash_profile
在文件末尾添加如下环境变量
JAVA_HOME是自己的jdk安装目录(解压后生成的目录)
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH
执行source命令,立即生效JDK环境变量
source /home/fendo/.bash_profile
测试jdk是否安装成功
java -version
六、安装Hadoop
首先下载Hadoop压缩包.目前最新的是Hadoop 2.7
Hadoop官网:http://hadoop.apache.org/
我用的是hadoop-2.7.1.tar.gz
同JDK一样,Hadoop也是解压即可用的。
类似地在/usr目录下新建hadoop目录,赋予hadoop用户读写权限,通过ftp工具将hadoop压缩包上传到CentOS
sudo mkdir /usr/hadoop
上传Hadoop,在上传之前先修改好配置文件,我是这样操作的,你也可以上传之后进行修改。
进入以下目录并修改其中四个文件
修改Hadoop核心配置文件:core-site.xml
<configuration>
<property>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<name>fs.defaultFS</name>
<value>hdfs://fendo:9000</value>
</property>
<property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
<description>Abase for othertemporary directories.
</description>
</property>
</configuration>
<!--注释:fs.defaultFS指定HDFS的地址及端口,hadoop.tmp.dir可选配置-->
HDFS配置文件:hdfs-site.xml
<configuration>
<property>
<!-- 设置hdfs副本数量 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/usr/hadoop/dfs/namesecondary</value>
</property>
</configuration>
<!--注解:dfs.replication指定HDFS文件的备份方式默认3,由于是伪分布式,因此需要修改为1。其他为可选项-->
Map-reduce配置文件:mapred-site.xml
把mapred-site.xml.template改成mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/usr/hadoop/staging</value>
</property>
YARN配置文件:yarn-site.xml
<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.hostname</name>
<value>fendo</value>
</property>
修改好上传到CentOS中
解压到/usr/hadoop目录中
tar -zxvf ./hadoop-2.7.1.tar.gz -C /usr/hadoop/
接下来配置Hadoop环境变量:
同样是编辑/home/fendo/.bash_profile文件,在末尾添加如下代码:
vi /home/fendo/.bash_profile
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.1
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
并修改PATH:
export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
使生效
source /home/.bash_profile
配置hadoop-env.sh
vi /usr/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
找到export JAVA_HOME=${JAVA_HOME}将其改为
export JAVA_HOME=/usr/java/jdk1.7.0_79
启动Hadoop
hadoop namenode -format
此时,Hadoop整个安装与配置过程完成了。
进入Hadoop的sbin目录,启动Hadoop,验证是否安装成功!
先启动HDFS
./start-dfs.sh
再启动YARN
./start-yarn.sh
或者
./start-all.sh
使用java的jps命令查看是否有hadoop的进程
[root@fendo sbin]# jps
9774 SecondaryNameNode
10702 Jps
7857 NodeManager
7666 ResourceManager
9386 DataNode
这里可以看到Hadoop的相关进程都起来了。