系统版本为 CentOS release 6.5 (Final)
Hadoop版本:hadoop 2.6.0 64 bit 版本
Zookeeper 版本:zookeeper-3.4.6
Hive版本:apache-hive-1.1.0
JDK版本哦openjdk 1.8.0
说明:apache社区上发布的是32位的编译版本,直接安装在64位上会出现库的问题
至于如何获取64位的版本,可以自己编译也可以从网上获取
网络规划本系统设计的部件如下:hadoop2.6.0、zookeeper-3.4.6.tar.gz、hive-1.1.0、mysql 5.6.21
IP | hostname | 部件 | 进程 |
172.29.31.74 | namenodem | Hadoop | ResourceManager NameNode DFSZKFailoverController(zkfc) |
172.29.31.60 | namenodes | Hadoop、hive | ResourceManager NameNode DFSZKFailoverController(zkfc) |
172.29.31.64 | datanode64 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper |
172.29.31.68 | Datanode68 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper |
172.29.31.71 | Datanode71 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper |
172.29.31.66 | mysql | mysql |
在每个主机上做同样的操作
在root用户下
执行如下命令:
serviceiptables stop
配置主机名在每个主机上做同样的操作
用户root用户
修改主机名:
1、vi/etc/hostname
2、把其中原来的名修改为网络规划中指定的主机名
3、vi/etc/hosts
4、在文件中添加如下数据
172.29.31.74 namenodem
172.29.31.60 namenodes
172.29.31.68 datanode68
172.29.31.71 datanode71
172.29.31.64 datanode64
5、重启生效
用户创建在每个主机上做同样的操作
用root用户登录,在所有节点上创建用户,用户名为hadoop ,密码:hadoop (这是用我的名字创建的,当然是可以修改的)
1、创建用户组:groupadd hadoopgrp
2、执行如下命令: useradd hadoop -g hadoopgrp -d /home/hadoop
3、用户建立好,在设置密码
执行如下命令: passwd hadoop
在提示输入密码处输入:hadoop
在提示确认密码处输入:hadoop
建立信任关系创建密钥所有的主机上都执行同样测操作
1、切换用户到hadoop
sudo su hadoop
2、创建.ssh 文件夹
在/home/hadoop目录下
mkdir .ssh
设置 .ssh 文件夹权限为
chmod 700 .ssh
3、创建密钥
执行如下命令:ssh-keygen -t rsa
持续回车确认,完成后在 .ssh目录下会产生如下两个文件 :id_rsa(私钥文件)id_rsa.pub(公钥文件)
建立信任关系1、所有主机上的公钥copy到同一台机器上(我这里copy到主机namenodem上)
scp ~/.ssh/id_rsa.pub hadoop@ namenodem:~/.ssh/id_rsa_ namenodes.pub
(注意:加粗的部分一定要按源主机区分,否则会覆盖原来主机上的配置文件)
5、创建authorized_keys
进入namenodem主机中的.ssh目录中
执行:touch authorized_keys
6、把所有的公钥全部写入authorized_keys文件中
执行:cat id_rsa_ namenodes.pub >> authorized_keys
(注意:加粗的部分一定要按源主机区分,所有上步copy过来的公钥都要加入,还要把自己的公钥加入)
7、设置authorized_keys权限
chmod 600 authorized_keys
8、把authorized_keys文件copy到其他所有节点的/home/hadoop/.ssh 目录下
执行:scp ~/.ssh/authorized_keyshadoop@ namenodes:~/.ssh/
(注意:加粗的部分一定要按目的主机区分,不同的主机需要修改的)
9、测试是否建立完成
输入命令ssh hadoop@namnodes
敲回车直接过去,不用输入密码就表示建立好了。
(注意:红色部分为主机名需要根据登入的不同的主机修改,这里每两个都登录一下,测试一下)
这里就不在描述如何安装jdk了,但是要注意把jdk的JAVA_HOME配置在系统的PATH中
安装zookeeper使用hadoop用户,先配置的bigdata-03
下载http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
解压1、上传zookeeper-3.4.6.tar.gz到/home/hadoop 目录下
2、解压
tar -zxvf zookeeper-3.4.6.tar.gz
配置1、将~/zookeeper-3.4.6/conf目录下的zoo_sample.cfg重新命名为zoo.cfg
cpzoo_sample.cfg zoo.cfg
2、修改zoo.cfg文件
修改:
dataDir=/home/hadoop/zookeeper-3.4.6/data
添加:
server.1=datanode64:2888:3888
server.2=datanode68:2888:3888
server.3=datanode71:2888:3888
3、创建数据目录
mkdir/home/hadoop/zookeeper-3.4.6/data
4、设置myid
创建文件 vi /home/hadoop/zookeeper-3.4.6/data/myid
在文件添加 1
(这个自要更具第二步中配置的serever后面的主机名对应)
在其他机器上安装1、copy目录
scp -r /home/hadoop/zookeeper-3.4.6/ hadoop@ datanode68:/home/hadoop/
(注意:修改主机名,把zookeeper copy到其他几个主机上)
2、修改myid
主机名 | myid |
datanode64 | 1 |
datanode68 | 2 |
datanode71 | 3 |
进入每台主机的
cd ~/zookeeper-3.4.6/bin
启动zookeeper
./zkServer.sh start
检查是否启动
./zkServer.sh status
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
安装namenodem节点1、把安装包hadoop-2.6.0.tar.gz 传到/home/hadoop目录下
2、tar开安装包 ,执行命令:tar -zxvf hadoop-2.6.0.tar.gz
3、配置hadoop的环境变量
A、切换到root用户,进入/etc/profile.d 目录
B、在这个目录下新建文件,执行命令:touch hadoop-2.6.0.sh
C、在文件中写入如下配置数据
HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_BIN=$HADOOP_HOME/bin
export PATH=$HADOOP_BIN:$PATH
D、切换到hadoop用户使配置生效,执行命令:source /etc/profile
E、执行命令:echo$HADOOP_HOME 如果看见输出为/home/hadoop/hadoop-2.6.0表示配置成功
4、建立数据存储目录(提示这步需要用root用户,安装开发环境可以不需要这步)
默认hadoop数据存放在HADOOP_HOME/data目录,需要通过软连接的形式把它链接到空间更大的地方,如果是测试可以不用,如果不用就直接在HADOOP_HOME目录下mkdir一个data目录
A、在大空间位置建立目录mkdir data 进入data目录在执行mkdir hadoop
B、修改文件/data的own,执行命令: chown -R hadoop:hadoopgrp /data
C、建立软连接 执行命令:ln -s /data/hadoop /home /hadoop/ hadoop-2.6.0/data
5、配置slaves
配置文件在$HADOOP_HOME/etc/hadoop下
在slaves文件中配置datanode的ip地址格式如下
datanode64
datanode68
datanode71
6、配置core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://masters</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.6.0/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>datanode64:2181,datanode68:2181,datanode71:2181</value> </property> |
7、配置hdfs‐site.xml
<property> <name>dfs.nameservices</name> <value>masters</value> </property> <property> <name>dfs.ha.namenodes.masters</name> <value>namenodem,namenodes</value> </property> <property> <name>dfs.namenode.rpc-address.masters.namenodem</name> <value>namenodem:50090</value> </property> <property> <name>dfs.namenode.http-address.masters.namenodem</name> <value>namenodem:50070</value> </property> <property> <name>dfs.namenode.rpc-address.masters.namenodes</name> <value>namenodes:50090</value> </property> <property> <name>dfs.namenode.http-address.masters.namenodes</name> <value>namenodes:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://datanode64:8485;datanode68:8485;datanode71:8485/masters</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/hadoop-2.6.0/journal</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <name>dfs.client.failover.proxy.provider.masters</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> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> |
8、配置mapred‐site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> |
9、配置yarn-site.xml
<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>RM_HA_ID</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>namenodem</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>namenodes</value> </property> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>datanode64:2181,datanode68:2181,datanode71:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> |
10、配置slaves文件
datanode64 datanode68 datanode71 |
这里的其他节点指namnodeslave和datanode
1、把上面配置好的hadoop 打包
用hadoop用户在/home/hadoop目录下
tar -zcvfhadoop-2.6.0-run.tar.gz hadoop-2.6.0
2、copy到其他节点
scp~/hadoop-2.6.0-run.tar.gz hadoop@datanode64:~/
3、在各个节点tar开包
tar-zxvf hadoop-2.6.0-run.tar.gz
4、按照nodename节点的配置方式配置环境变量
1、 启动journalnode(在datanode64、datanode68、datanode71)
进入:/home/hadoop/hadoop-2.6.0/sbin
执行命令:./hadoop-daemon.shstart journalnode
1、在namenode master格式化
配置好后在namenodem机器上进入hadoop的bin目录格式化文件系统(一定要)
hdfs namenode -format #格式化文件系统
2、格式化namenode slave
把master上格式化的数据copy到slave上
scp–r /home/hadoop/hadoop-2.6.0/tmp hadoop@namenodes:/home/hadoop/hadoop-2.6.0/tmp
格式化ZK在namnodem上执行:
hdfs zkfc -formatZK
启动hadoop1、 启动hdfs(在namenodem上)
在/home/hadoop/hadoop-2.6.0/sbin下
start-dfs.sh
2、 启动yarn(在namenodem上)
在/home/hadoop/hadoop-2.6.0/sbin下
./start-yarn.sh
3、 启动yarn standby
. /yarn-daemon.sh start resourcemanager
4、用jps命令检查每个节点对应的进程是否启动,进程参考网络规划表中的进程
在浏览器中输入 http://172.29.31.74:50070/dfshealth.html 进入页面表示成功
在浏览器中输入 http://172.29.31.74:8088/cluster 进入页面表示yarn安装成功
请在网上寻找安装文档
Hive安装下载安装包http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-1.1.0-bin.tar.gz
安装1、上传包
上传hive包到nodenames上(我是这样规划的,在其他节点也可以)到
/home/hadoop上
2、解压
tar–zxvf apache-hive-1.1.0-bin.tar.gz
3、重命名包
mv apache-hive-1.1.0-bin hive-1.1.0
配置1、 配置环境变量
进入环境变量配置目录,这里需要切换到root用户:cd /etc/profile.d
创建配置文件:touchhive-1.1.0.sh
打开配置文件:vi hive-1.1.0.sh
配置环境变量:
#set hive environment HIVE_HOME=/home/hadoop/hive-1.1.0 PATH=$HIVE_HOME/bin:$PATH CLASSPATH=$CLASSPATH:$HIVE_HOME/lib export HIVE_HOME export PATH export CLASSPATH |
保存退出::wq!
切换到hadoop用户立即生效:source /etc/profile
2、 配置hive-env.sh
进入配置目录: cd /home/hadoop/hive-1.1.0/conf
打开配置文件hive-env.sh,配置
# Set HADOOP_HOME to point to a specific hadoop install directory HADOOP_HOME=/home/hadoop/hadoop-2.6.0 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/home/hadoop/hive-1.1.0/conf |
3、 配置hive-site.xml
创建配置文件
cp hive-default.xml.template hive-site.xml |
在同上的目录下
<property> <name>hive.metastore.warehouse.dir</name> <value> hdfs://masters:50090/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <property> <name>hive.exec.scratchdir</name> <value> hdfs://masters:50090/hive/scratchdir</value> <description>Scratch space for Hive jobs</description> </property> <property> <name>hive.querylog.location</name> <value>/home/hadoop/ hive-1.1.0/logs</value> <description> Location of Hive run time structured log file </description> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://172.29.31.66:3306/hive_metadata?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>××××××</value> <description>password to use against metastore database</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/home/hadoop/hive-1.1.0/local/${system:user.name}</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/home/hadoop/hive-1.1.0/local/${hive.session.id}_resources</value> <description>Temporary local directory for added resources in theremote file system.</description> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/home/hadoop/hive-1.1.0/logs/operation_logs</value> <description>Top leveldirectory where operation logs are stored if logging functionality isenabled</description> </property> |
在hive-1.1.0下创建local目录
mkdir local |
4、 配置log4j
在同上的目录下
创建配置文件:
cp hive-exec-log4j.properties.template hive-exec-log4j.properties cp hive-log4j.properties.template hive-log4j.properties |
修改上面两个文件中的配置
hive.log.dir=/home/hadoop/ hive-1.1.0/logs log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter |
注意如果没有logs目录就建立一个 执行命令
mkdir /home/hadoop/hive-1.1.0/logs |
1、下载驱动包
我用的mysql是mysql 5.6.15 版本,配套的jdbc是mysql-connector-java-5.1.24-bin.jar
这个jar在网上一大把,自己在网上下载就可以了,一定要根据mysql版本选择配套的版本
2、添加驱动包
把驱动包放到 $HIVE_HOME/lib 目录下
3、修改hadoop的库文件
在$HADOOP_HOME/share/hadoop/yarn/lib下备份jline-0.9.94.jar
mv jline-0.9.94.jar jline-0.9.94.jar.bak |
Copy高版本的jline
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME /share/hadoop/yarn/lib |
执行如下命令:
hive |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |