背景:部门要对接大数据部门那边的交易流水数据,然后根据产品的特性统计分析等,应用到自己部门的各个产品中(吐槽=_=!:为啥大数据部门不给帮忙做呢?跨部门的问题,大数据懒得理你哈哈哈)于是部门老大无奈又充满期待的看着我们这帮Java的,加油~你们可以的......中间省略N个字,最后由我一个人边自学边开发项目,一个月不到时间,搭建完整套大数据环境,上线了商业数据项目大数据版本。比起用分布式定时任务去跑数据处理数据快了1万倍,原本花7天不停机处理数据,现在10分钟多就搞完,当时测试的时候所有人的表情相当震惊!!!哈哈哈
1. 服务器规划:
Hadoop 具体部署是两个集群,HDFS集群和YARN集群,两个集群逻辑上分离,但是物理上在一起。
HDFS:负责海量数据的存储,主要角色有: NameNode
; SecondaryNameNode
; DataNode
YARN: 负责海量数据运算的资源调度,主要角色有:ResourceManager
;NodeManager
IP | hostname(主机名) | 身份 |
---|---|---|
10.213.50.94 | cnsz72vl0237 | NameNode、DataNode ResourceManager、HistoryServer |
10.213.50.95 | cnsz72vl0238 | DataNode、NodeManager |
10.213.50.96 | cnsz72vl0239 | DataNode、NodeManager、SecondaryNameNode |
2. Linux设置
2.1 修改主机与IP映射
vi /etc/hosts
10.213.50.94 cnsz72vl0237
10.213.50.95 cnsz72vl0238
10.213.50.96 cnsz72vl0239
2.2 关闭防火墙
#查看防火墙状态:
service iptables status
#关闭防火墙状态:
service iptables stop
#再次执行下述命令查看防火墙状态:
service iptables status
#防火墙开启自启动状态:
chkconfig iptables --list
#关闭防火墙开启自启动:
chkconfig iptables off
2.3 设置ssh免登陆
请参考我的另一篇博客:《ssh免密登录》
3. 环境设置
3.1 上传安装包到指定目录后,解压:
cd /home/ysops/hadoop
tar -zxvf hadoop-3.3.0.tar.gz
为了方便修改解压后的文件目录名:
mv hadoop-3.3.0 hadoop
在当前用户目录下bash_profile:
vi .bash_profile
在尾部追加以下内容:
export HADOOP_HOME=/home/ysops/hadoop/hadoop
PATH变量后面增加
PATH=$PATH:$JAVA_HOME/bin
退出 vi 编辑器,执行 source .bash_profile
4. hadoop设置
1、进入目录~/hadoop/hadoop/etc/hadoop,依次编辑hadoop-env.sh、mapred-env.sh、yarn-env.sh这三个文件,确保它们的内容中都有JAVA_HOME的正确配置:
export JAVA_HOME=/home/ysops/java/jdk1.8
创建文件夹(三台都要创建)
mkdir -p ~/work/tmp/dfs/name && mkdir -p ~/work/tmp/dfs/data
2、编辑core-site.xml文件,找到configuration节点,改成以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cnsz72vl0237:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ysops/work/tmp</value>
</property>
</configuration>
3、编辑hdfs-site.xml文件,找到configuration节点,改成以下内容,把node2配置成sendary namenode:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cnsz72vl0239:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/ysops/work/tmp/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/ysops/work/tmp/dfs/data</value>
</property>
</configuration>
4、编辑workers文件,删除里面的"localhost",增加两行内容:
cnsz72vl0238
cnsz72vl0239
5、编辑yarn-site.xml文件,找到configuration节点,改成以下内容
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>cnsz72vl0237</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>cnsz72vl0237:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>cnsz72vl0237:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>cnsz72vl0237:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>cnsz72vl0237:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>cnsz72vl0237:8088</value>
</property>
</configuration>
6、编辑mapred-site.xml文件,找到configuration节点,改成以下内容:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://cnsz72vl0237:9001</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cnsz72vl0237:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cnsz72vl0237:19888</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/home/ysops/hadoop/hadoop/etc/hadoop,
/home/ysops/hadoop/hadoop/share/hadoop/common/*,
/home/ysops/hadoop/hadoop/share/hadoop/common/lib/*,
/home/ysops/hadoop/hadoop/share/hadoop/hdfs/*,
/home/ysops/hadoop/hadoop/share/hadoop/hdfs/lib/*,
/home/ysops/hadoop/hadoop/share/hadoop/mapreduce/*,
/home/ysops/hadoop/hadoop/share/hadoop/mapreduce/lib/*,
/home/ysops/hadoop/hadoop/share/hadoop/yarn/*,
/home/ysops/hadoop/hadoop/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
7、将整个hadoo目录同步到cnsz72vl0238、cnsz72vl0239的home目录:
scp -r ~/hadoop ysops@10.213.50.95:~/hadoop/
scp -r ~/hadoop ysops@10.213.50.96:~/hadoop/
5. hadoop启动
(以下的启动都只在NameNode(cnsz72vl0237)节点启动)
1、在cnsz72vl0237执行以下命令格式化hdfs,在~/hadoop/hadoop/bin目录
hdfs namenode -format
2、~/hadoop/hadoop/bin目录,启动yarn:
start-yarn.sh
3、启动ResourceManager
yarn-daemon.sh start resourcemanager
3、启动日志服务,如果启动信息说明已经启动,可以通过jps命令,查看是否启动,就不用重复启动了
mr-jobhistory-daemon.sh start historyserver
4、启动成功后,最后通过jps命令查看java进程,如下:
3253 JobHistoryServer
2647 NameNode
3449 Jps
2941 ResourceManager
5、再去cnsz72vl0238,执行jps命令查看java进程:
2176 DataNode
2292 NodeManager
2516 Jps
6、再去cnsz72vl0239,执行jps命令查看java进程:
1991 DataNode
2439 Jps
2090 SecondaryNameNode
2174 NodeManager
至此,hadoop启动成功;
Hdfs:http://10.213.50.96:50090/status.html
hadoop:http://10.213.50.94:8088/
http://10.213.50.94:9870/dfshealth.html#tab-overview
6. hadoop验证
1、在cnsz72vl0237上,在home目录创建文件test.txt,内容随意
doop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
2、在hadoop/bin,在hdfs上创建一个文件夹
hdfs dfs -mkdir /input
3、将test.txt文件上传的hdfs的/input目录下:
hdfs dfs -put ~/test.txt /input
4、直接运行hadoop安装包中自带的workcount程序:
yarn \
jar ~/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar \
wordcount \
/input/test.txt \
/output
5、控制台输出如下: