赞
踩
首先先说一下大概的步骤,就用四台为例,简单适合新手操作。
流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zookeeper;最后就是搭建高可用了。不熟练的小伙伴可以先试试单机模式。
这是我的四台机子加一个单机模式 。
1.创建虚拟机就不多说了,一直下一步下一步,重复四次创建4个。当然有疑问的可以私聊我,我帮你解决。创建好后就是修改配置
首先输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,回撤
修改的几个部分我都写出来了。把dhcp(动态分配IP)改成static,最后一次添加IPADDR=192.168.153.135;
网关 GATEWAY=192.168.153.2;
子网掩码 NETMASK=255.255.255.0;
域名解析器 DNS1=8.8.8.8;esc , :wq 保存并退出
hostnamectl set-hostname + 名字 可以修改hostname
2.用linux系统安装数据库
1.下载mysql源安装包
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
如果运行错误。先运行
yum install -y wget ,然后在运行安装包
2.安装mysql源
$ yum localinstall mysql57-community-release-el7-8.noarch.rpm
3.检查mysql源是否安装成功
$ yum repolist enabled | grep "mysql.*-community.*"
4.安装MySQL
这一步才是真正安装mysql
$ yum install mysql-community-server
5.启动MySQL服务并设置开机启动
$ systemctl start mysqld
$ systemctl enable mysqld
$ systemctl daemon-reload
6.端口开放
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd --reload
7.修改root本地登录密码
1)查看mysql密码
grep 'temporary password' /var/log/mysqld.log
localhost:是初始密码;
mysql -uroot -p 登录;
set password for 'root'@'localhost'=password('password');修改密码
set global validate_password_policy=0; 设置密码的等级
set global validate_password_length=1; 设置密码的长度
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
给权限就登录成功了
3 安装jdk
我写了一个脚本,放在一个文件中,给权限,执行就自动安装了,非常方便
- #!/bin/bash
-
- jdk=true
-
- installdir=/opt/soft
- if [ ! -d "$installdir" ]
- then mkdir $installdir
- fi
-
- if [ "$jdk" = true ]
- then echo " ---------安装java JDK------------"
- tar -zxf /opt/install/jdk-8u111-linux-x64.tar.gz -C /opt/soft/
- mv /opt/soft/jdk1.8.0_111 /opt/soft/jdk180
- echo "#jdk" >> /etc/profile
- echo 'export JAVA_HOME=/opt/soft/jdk180' >> /etc/profile
- echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
- echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
- fi
运行完后,要source /etc/profile 更新一下
java -version ; javac 检查安装是否成功
4.ssh免密登录 注意的是每次只能生成一次,连接其他机器,断了就要重新生成
1 ssh-keygen -t rsa -P ""
根据RSA算法生成私钥和公钥
可以用 cd .ssh/
2 拷贝公钥给目标服务器
ssh-copy-id -i .ssh/id_rsa.pub -p22 root@192.168.153.135
3免密登录 ssh -p22 root@192.168.153.***
另外三台,也这么操作,本机也要自连接
5 安装zookeeper集群
1解压zookeeper
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft
改名 mv zookeeper-3.4.5-cdh5.14.2.tar.gz ./ zookeeper345
2修改配置环境
vi /etc/profile
export ZOOKEEPER_HOME=/opt/soft/zookeeper345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
3修改 zoo.cfg
dataDir=/opt/soft/zookeeper345/datatmp //新建datatmp
clientPort=2181
server.1=192.168.153.150:2888:3888
server.2=192.168.153.160:2888:3888 //一般写三个
server.3=192.168.153.170:2888:3888
4 在zookeeper345/ 下新建:datatmp,再建一个myid 写server对应的数字
6.高可用搭建
1 解压 tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C ../soft
改名 mv -zxvf hadoop-2.6.0-cdh5.14.2.tar ./ hadoop260
2 到/hadoop260/etc/hadoop ls查询目录
配置 hadoop.env.sh mapred.env.sh yarn.env.sh 三个环境
修改 JAVA_HOME= /opt/soft/jdk180 (jdk的安装路径)
3修改 core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 和slaves 重中之重
- core-site.xml
- <!-- 指定hdfs的nameservice 为 mycluster -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://mycluster/</value>
- </property>
-
- <!-- 指定hadoop工作目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/opt/soft/hadoop260/hadooptmp/</value>
- </property>
-
- <!-- 指定zookeeper集群访问地址 -->
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>yy150:2181,yy160:2181,yy170:2181</value>
- </property>
-
- <!-- 配置为了解决以后其他组件连接HDFS集群 -->
- <property>
- <name>hadoop.proxyuser.bigdata.hosts</name>
- <value>*</value>
- </property>
-
- <property>
- <name>hadoop.proxyuser.bigdata.groups</name>
- <value>*</value>
- </property>
- hdfs-site.xml
-
- <!-- 指定HDFS的nameservices为mycluster,需要跟core-site.xml中保持一致 -->
- <property>
- <name>dfs.nameservices</name>
- <value>mycluster</value>
- </property>
-
- <!-- 设置mycluster集群有两个namenode, 分别为nn1,nn2 -->
- <property>
- <name>dfs.ha.namenodes.mycluster</name>
- <value>nn1,nn2</value>
- </property>
-
- <!-- 配置nn1 的RPC通信地址 -->
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn1</name>
- <value>yy150:9000</value>
- </property>
-
- <!-- 配置nn1的http通信地址 -->
- <property>
- <name>dfs.namenode.http-address.mycluster.nn1</name>
- <value>yy150:50070</value>
- </property>
-
- <!-- 配置nn2 的RPC通信地址 -->
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn2</name>
- <value>yy160:9000</value>
- </property>
-
- <!-- 配置nn2的http通信地址 -->
- <property>
- <name>dfs.namenode.http-address.mycluster.nn2</name>
- <value>yy160:50070</value>
- </property>
-
- <!-- 指定JournalNode 在本地磁盘存放数据的位置 -->
- <property>
- <name>dfs.journalnode.edits.dir</name>
- <value>/opt/soft/hadoop260/journaldata</value>
- </property>
-
- <!-- 指定NameNode的edits元数据在journalNode上的服务器 -->
- <property>
- <name>dfs.namenode.shared.edits.dir</name>
- <value>qjournal://yy150:8485;yy160:8485;yy170:8485/mycluster</value>
- </property>
-
- <!-- 开启NameNode 自动切换 -->
- <property>
- <name>dfs.ha.automatic-failover.enabled</name>
- <value>true</value>
- </property>
-
- <!-- 配置nameNode失败自动切换的实现方式 -->
- <property>
- <name>dfs.client.failover.proxy.provider.mycluster</name>
- <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
- </property>
-
- <!-- 配置隔离机制方法 -->
- <property>
- <name>dfs.ha.fencing.methods</name>
- <value>
- sshfence
- shell(/bin/true)
- </value>
- </property>
-
- <!-- 使用sshfence隔离机制时需要ssh免密登陆 -->
- <property>
- <name>dfs.ha.fencing.ssh.private-key-files</name>
- <value>/root/.ssh/id_rsa</value>
- </property>
-
- <!-- 配置sshfence隔离机制超时时间 -->
- <property>
- <name>dfs.ha.fencing.ssh.connect-timeout</name>
- <value>30000</value>
- </property>
-
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- mapred-site.xml
-
- <!-- 指定mapreduce运算时资源调度为 yarn 模式 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
-
- <!-- 配置mapreduce历史服务器地址 端口号 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>yy180:10020</value>
- </property>
-
- <!-- 配置mapreduce历史服务器WEB访问地址 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>yy180:19888</value>
- </property>
- yarn-site.xml
-
- <!-- Site specific YARN configuration properties -->
-
- <!-- 开启高可用 -->
- <property>
- <name>yarn.resourcemanager.ha.enabled</name>
- <value>true</value>
- </property>
-
- <!-- 指定ResourceManager的标识:yrc -->
- <property>
- <name>yarn.resourcemanager.cluster-id</name>
- <value>yrc</value>
- </property>
-
- <!-- 指定RM的名字-->
- <property>
- <name>yarn.resourcemanager.ha.rm-ids</name>
- <value>rm1,rm2</value>
- </property>
-
- <!-- 指定rm1服务器 -->
- <property>
- <name>yarn.resourcemanager.hostname.rm1</name>
- <value>yy150</value>
- </property>
-
- <!-- 指定rm2服务器 -->
- <property>
- <name>yarn.resourcemanager.hostname.rm2</name>
- <value>yy160</value>
- </property>
-
- <!-- 指定rm 被管理的zk 地址 -->
- <property>
- <name>yarn.resourcemanager.zk-address</name>
- <value>yy150:2181,yy160:2181,yy170:2181</value>
- </property>
-
- <!-- 运行mapreduce任务需要使用的服务 -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
-
- <!-- 开启yarn集群的日志聚合功能 -->
- <property>
- <name>yarn.log-aggregation-enable</name>
- <value>true</value>
- </property>
-
- <!-- 设置日志保存时间 -->
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>86400</value>
- </property>
-
- <!-- 启动rm自动恢复功能 -->
- <property>
- <name>yarn.resourcemanager.recovery.enabled</name>
- <value>true</value>
- </property>
-
- <!-- 制定rm 状态信息存储在zookeeper集群上 -->
- <property>
- <name>yarn.resourcemanager.store.class</name>
- <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
- </property>
vi ./slaves
yy150 yy160 yy170 yy180 写入的是你四个虚拟机的hostname。
5 配置环境 vi /etc/profile
#hadoop
export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source /etc/profile
6 同步另外三台
xsync /hadoop260
配置环境,在更新
切记 如果在格式化namenode不成功的时候,要先启动dfs start-dfs.sh
7 hadoop namenode -format 格式化namenode
将本机格式化后的hadooptmp文件同步到另一台备用的namenode里
scp -r ./hadooptmp root@yy160:/opt/soft/hadoop260
8初始化zookeeper(方便两个namenode交替使用)
hdfs zkfc -formatZK
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。