(我将需要的包全部放到百度盘里了,防止链接被乱用,链接七天有效,可以一次搞定,链接过期请在评论区留下邮箱,点赞回复更快:D ):
链接: https://pan.baidu.com/s/1WPJtyJCIrJTGxZBWrsCjMg 提取码: k788 2019年9月19日 星期四 9:22 更新
hadoop-2.8.5.tar.gz、hbase-2.1.1-bin.tar.gz、apache-hive-2.3.4-bin.tar.gz、jdk-8u102-linux-x64.tar.gz、mysql-community-*.rpm、xshell、xftp、CentOS-7-x86_64-Minimal-1804.ISO、mysql-connector-java-8.0.13.jar
注,mysql不是完全必要,现在的hive都自带derby了,所以可以不用mysql,而且配置起来其实更简单。xshell和xftp用来连接虚拟机的,比较方便。虚拟机的话我用的vmware,这里不上传安装包了,自己解决
安装三个一毛一样的虚拟机,然后再windows上安装xshell和xftp。如何安装自行百度,非常简单。
安装好虚拟机后,要将虚拟机的地址设定为静态地址,否则虚拟机地址定期会变,会造成不必要的麻烦,要想将虚拟机设置为静态地址,首先了解虚拟机的网关掩码啥的。
点击【编辑】、【虚拟网络编辑器】,选中nat模式,然后【nat设置】如图
这里面有子网ip
,子网掩码
,网关ip
信息,用它们来设置静态ip。
在root
用户下,做下面这些事情:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
然后将其修改如下:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none" # 这里是修改过的地方
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="006888a8-6385-4dda-b8e8-9d6f89b07a4f"
DEVICE="ens33"
ONBOOT="yes"
# 下面四个是新添加的,ipaddr就是我们为虚拟机设置的静态ip,每个主机要设置不同的静态
# ip,并且前只有ip的后面那个8位可以变,就分别设成129,130,131吧
IPADDR=192.168.208.129
GATEWAY=192.168.208.2
NETMASK=255.255.255.0
DNS1=192.168.208.2
然后重启网络服务
service network restart
可以用ip addr
命令查看本机ip如下:
[fay@master ~]$ ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:96:b6:0a brd ff:ff:ff:ff:ff:ff
inet 192.168.208.129/24 brd 192.168.208.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::5914:336a:4dde:d580/64 scope link noprefixroute
valid_lft forever preferred_lft forever
可以看到192.168.208.129
就是配置好的静态ip
然后就用xshell连接三台主机了,利用xftp将预先下载好的安装包上传到其中一个虚拟机上,选中其为master,其它两作为小弟slave1和slave2,这里配置下每台主机的 /etc/hosts
文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.208.129 master
192.168.208.130 slave1
192.168.208.131 slave2
然后每个主机都创建一个用户fay
,然后将/opt
这个目录的权限给这个用户:chown fay -R /opt
,切换到这个用户。创建用户的过程在虚拟机安装的时候就可以设置了(如果是vmware的话),跟着步骤走就好,实在不想搞直接用root也行。后面所有东西都往/opt
装。
systemctl stop firewalld
systemctl disable firewalld
三台虚拟机的时间可能不是同步的,这会影响HBASE的使用,所以,建议将三个虚拟机的时间同步,这里有两种方法,可以兼用。
第一种:设置虚拟机
设置虚拟机,找到【选项】==> 【vmwaretools】 ==> 【点击将客户端时间与主机同步】 ==> 【确定】
第二种:在虚拟机上安装ntp服务
yum install -y ntpdate
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate -u ntp.api.bz
这里推荐第二种,如果经常挂起虚拟机的话,第一种好像作用不大,第二种的话就可以恢复后来一次
后面操作用 fay
用户
java是必须的
su fay
tar -zxvf jdk-8u102-linux-x64.tar.gz -C /opt
配置环境变量
vi ~/.bashrc
export JAVA_HOME=/opt/jdk1.8.0_102
export PATH=$PATH:$JAVA_HOME/bin
# 退出来
source ~/.bashrc
# 测试java是否安装成功
java -version
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
然后尝试下能不能免秘钥 ssh localhost
,如果可以,再将自己的公钥给两个slave
ssh-copy-id fay@slave1
ssh-copy-id fay@slave2
对于其它两个slave,也执行同样的命令,然后将公钥分别交给另外两台机器,至此三台虚拟机间就可以相互无秘钥切换了。
然后解压hadoop,然后进入etc/hadoop文件夹下修改配置文件
tar -zxvf hadoop-2.8.5.tar.gz -C /opt
cd /opt/hadoop-2.8.5/etc/hadoop/
修改core-site.xml,这些xml文件,有些有,有些是带template或者default字段,将其copy成我说的文件即可
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/home/fay/tmp
修改hdfs-site.xml
dfs.replication
2
dfs.permissions.enabled
false
dfs.datanode.max.xcievers
4096
Datanode 有一个同时处理文件的上限,至少要有4096
dfs.namenode.secondary.http-address
master:9001
dfs.webhdfs.enabled
true
修改mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
修改yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
86400
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
修改yarn-env.sh
和hadoop-env.sh
#将这句话放到带有java_home的位置,主要是有时候它就是不认你配置的java_home环境变量
export JAVA_HOME=/opt/jdk1.8.0_102
修改slaves文件
#删掉localhost
slave1
slave2
将hadoop添加到环境变量,修改~/.bashrc
export JAVA_HOME=/opt/jdk1.8.0_102
export HADOOP_HOME=/opt/hadoop-2.8.5
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后 source ~/.bashrc
另外两台机器就简单了,直接copy过去就好
scp -r /opt fay@slave1:/
scp -r /opt fay@slave2:/
理论上这一步没问题,但是你之前/opt权限没配置好就权限不足,那就弄好权限。
然后把环境变量文件也直接copy过去
scp ~/.bashrc fay@slave1:/home/fay/
scp ~/.bashrc fay@slave2:/home/fay/
两台机器上分别 source ~/.bashrc
然后在master
节点上 初始化namenode:
hdfs namenode -format
然后启动hadoop
start-dfs.sh
start-yarn.sh
master节点上输入jps
,看到如下显示:
[fay@master hadoop-2.8.5]$ jps
35184 SecondaryNameNode
34962 NameNode
35371 ResourceManager
35707 Jps
两个slave节点:
[fay@slave1 ~]$ jps
16289 Jps
16035 DataNode
16152 NodeManager
到这里hadoop基本已经安装好了,当然你可能没那么顺利,可能会有报错,那就根据错误网上找解决方案,如果一次成功只能说明我写的太好了还有你很认真。
测试一下hadoop
在windows浏览器上输入192.168.208.129:8088
出现一下界面说明yarn应该问题不大了
当然还是要跑下hadoop 自带的mapreduce 用例
$ cd /opt/hadoop-2.8.5
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/fay
$ hdfs dfs -put etc/hadoop input
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
# 没有报java错误,那就ok,在output目录查看下输出结果:
$ hdfs dfs -cat output/*
好了以上你都没问题,hadoop本身应该就没问题了。后面继续更新hbase和hive的安装