1. linux集群情况
1. window 宿主192.168.137.188
node01.hadoop.com node01 192.168.137.100 00:50:56:3D:7D:CC root 123456
node02.hadoop.com node02 192.168.137.110 00:50:56:3D:2F:CC root 123456
node03.hadoop.com node03 192.168.137.100 00:50:56:28:C3:E8 root 123456
2. 软件安装情况
node01
zookeeper hadoop jdk8 /export/servers
flume(数据采集框架) /export/servers
hive
impala
kafka node01:9092 keadmin, 移除topic
es user:es passwd:es
nodejs
kibana
node02
zookeeper hadoop jdk8 /export/servers
flume(数据采集框架) /export/servers
hive
impala
kafka
node03
zookeeper-3.4.5-cdh5.14.0.tar hadoop-2.6.0-cdh5.14.0-src.tar jdk8 /export/servers
hive(数据仓库) /export/servers 端口:jdbc:hive2://node03.hadoop.com:10000
flume(数据采集框架) /export/servers
azkaban-solo(任务调度框架) /export/servers 端口:http://node03:8081 azkaban azkaban
mysql root 123456 azkaban azkaban
azkaban-server/exec 两个执行任务的,一个web 端口:https://node03:8443 azkaban azkaban
sqoop
hive
impala
hue(图形界面,可以操作其他组件) node03:8888 root 123456
oozie(天生分布式) node03:11000
kafka-eagle-bin-1.2.2.aaa.tar node03:8408/ke admin 123456
kafka_2.11-1.0.0
1.1 集群情况
2. 软件安装
2.1 安装jdk
-
rpm -qa | grep java 查找自带的java
-
rpm -e xxx -nodeps 不考虑依赖删除java包
-
rpm -ivh 客户端程序 --nodeps --force 安装rpm包
-
vim /etc/profile
export JAVA_HOME=/exoprt/servers/jdk1.8.0_141 exoprt PATH=$JAVA_HOME/bin:$PATH```
-
source /etc/profile 重新编译
-
java -version java javac
2.2 安装zookeeper
- cd /export/servers/zookeeper-3.4.5-cdh5.14.0/conf mv zoo_xxx.xxx zoo.cfg
- mkdir -p /export/servers/zookeeper-3.4.5-cdh5.14.0/zkdatas
- vim zoo.cfg
- 修改dataDir=创建的目录
- 放开3 1
- 配置集群关系 server.1=node01.hadoop.com node01 server.2=node02.hadoop.com node02 server.3=node03.hadoop.com node03
- zkdatas 目录下 echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
- 发送到另外两台 修改myid
- 启动集群
- bin 目录下 sh zkServer.sh start | status | stop
- sh zkCli.sh 退出是quit
2.3 安装hadoop伪分布式集群
- hadoop目录结构
- bin sbin 存放执行的脚本
- etc/hadoop 配置文件
- lib/native hadoop本地库, 存放了以下c程序
- bin/hadoop checknative 检查hadoop本地库支持什么的
- hadoop: 支持c程序访问hadoop集群
- snappy: appach公司的hadoop软件包天使不支持snappy压缩库, cloudera CDH5需要编译
- bin/hadoop checknative 检查hadoop本地库支持什么的
- 修改6个配置文件
- core-site.xml 核心配置文件 绝对是分布式还是单节点 决定namenode在哪台服务器上
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.52.100:8020</value>
</property>
- hdfs-site.xml hdfs配置文件, 指定元数据存放位置(2个位置), datanode节点数据存放位置(1个位置)
并指定外界浏览器访问的端口号50070<!-- 一部分元数据存放的位置 --> <property> <name>dfs.namenode.name.dir</name> <value>file:///export/servers/hadoop-2.6.0- cdh5.14.0/hadoopDatas/namenodeDatas</value> </property> <!-- 定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas</value> </property> <!-- 另外一部分元数据存放的位置 --> <property> <name>dfs.namenode.edits.dir</name> <value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits</value> </property>
- hadoop-evn.sh 环境变量
- marped-site.xml mapreduce 配置文件 指定了jobhistoryserver节点在哪台机器上&外界访问端口
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>
- yarn-site.xml 指定主节点在哪台服务器上, 外键默认访问端口号80888
- slaves 指定从节点在哪台服务器上
- 增加文件夹, 因为刚才配置数据存放位置都是需要创建文件夹的,
- 先dh -lh 看看磁盘空间
- 然后创建
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
- 配置环境变量
- 分发到其他台服务器上
- 启动集群
- 首次启动一定要格式化hdfs hdfs -namenode format 很重要, 只执行这一次
- 单个节点启动
hadoop-daemon.sh start namenode
yarn-daemon.sh start resourcemanager
sbin/mr-jobhistory-daemon.sh start historyserver
#-----------------------------------
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
- 脚本一次启动
cd /export/servers/hadoop-2.6.0-cdh5.14.0/
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
- 外键访问界面
- node01:50070 hdfs界面 可以看到存储的数据
- node01:80888 yarn界面
- node01:19888 mapreduce jobhistory历史任务界面
- 为什么要重新编译hadoop
- 为了支持c程序
- 为了支持snappy压缩,天生不支持snappy压缩
3. shell 编程
- #!/bin/bash 使用哪种解析器解析脚本
- sh xxx.sh 执行脚本
- 变量 除了变量不空格,其他都空格
- $1 $2 ${10} xxx.sh 脚本中获取命令窗口传递过来的参数
- a= 1 b = 1 b= 1b=var $var 脚本中调用变量(调用的变量需要初始化,也就是要有初始值)
- 参数的传递
- $n 接收传递的第n个参数
- $@ 接收全部参数 数组格式
- $* 接收全部参数 拼接为字符串
- $# 几个参数
- 计算
- expr $a + $b
- c=$(( $a + $b )) 或者 count=1 (( count++ ))
- d=$[ $a + $b ]
- 比较运算符
- [ $a -eq $b ] [ $a -gt $b ] [ $a -lt $b]
- 选择
#!/bin/bash
a=$1
b=$2
if[ $a -eq $b]
then
echo $a 等于 $b
elif[ $a -gt $b ]
then
echo $a 大于 $b
else
echo $a 小于 $b
fi
# --------------命令窗口执行
sh hello.sh 20 30
- 循环
#!/bin/bash
for n in $@
do
echo $n
done
# --------------命令窗口执行
sh hello.sh 20 30 40 50
- 函数
#!/bin/bash
funshow(){
# 使用$@ 接收调用本参数时传递的参数
for n in $@
do
echo $n
done
}
# 脚本中调用自定义的函数, 使用$@接收命令行传递的所有参数
funshow $@
# ---------------命令行执行
sh hello.sh 20 30 40