https://hadoop.apache.org/releases.html
# JDK安装: https://abc.htmltoo.com/thread-46002.htm
#系统环境
IP | 服务 | 角色 |
192.168.34.27 | NameNode、SecondaryNameNode、ResourceManager | node1 |
192.168.34.28 | DataNode、NodeManager | node2 |
192.168.34.29 | DataNode、NodeManager |
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz
mkdir -p /opt/hadoop
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/hadoop
vi /etc/profile
#java
JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-3.1.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
---node1、node2、node3 三个节点都需要修改,重启生效
[root@node1 conf]# cat /etc/hostname #设置hostname 需要重启机器
node1
[root@node1 hadoop]# cat /etc/hosts #设置hosts
192.168.34.27 node1
192.168.34.28 node2
192.168.34.29 node3
---配置免密码登陆
ssh-keygen -t rsa #生成公钥(四个回车就可以了)
ssh-copy-id node1 #将公钥拷贝到node1
ssh-copy-id node2 #将公钥拷贝到node2
ssh-copy-id node3 #将公钥拷贝到node3
-测试 ssh 无密登陆是否成功
ssh node2
ssh node3
---配置hadoop
vim /opt/hadoop/hadoop-3.1.4/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64 #配置JAVA_HOME 环境变量
vim core-site.xml
<configuration>
<!-- 指定 namenode 的通信地址 默认 8020 端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1/</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/mydata/hadoop/hadoop-3.1.4/tmp</value>
</property>
</configuration>
vim yarn-site.xml
#添加如下内容
<configuration>
<!-- 指定ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
vim workers
#默认是localhost 修改为本机hostname 如果是集群环境则需要配置多个即可但是多个机器需要免密码登录的
node2
node3
vim hdfs-site.xml
#添加如下内容
<configuration>
<!-- namenode 上存储 hdfs 名字空间元数据-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/mydata/hadoop/hadoop-3.1.4/namenode</value>
</property>
<!-- datanode 上数据块的物理存储位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/mydata/hadoop/hadoop-3.1.4/datanode</value>
</property>
<!-- 设置 hdfs 副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
</configuration>
vim mapred-site.xml
#添加如下内容
<configuration>
<!-- 指定yarn运行-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/mydata/hadoop/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/mydata/hadoop/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/mydata/hadoop/hadoop-3.1.4</value>
</property>
</configuration>
vim /opt/hadoop/hadoop-3.1.4/sbin/start-dfs.sh
vim /opt/hadoop/hadoop-3.1.4/sbin/stop-dfs.sh
-添加如下内容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vim /opt/hadoop/hadoop-3.1.4/sbin/start-yarn.sh
vim /opt/hadoop/hadoop-3.1.4/sbin/stop-yarn.sh
-添加如下内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
scp -r /opt/hadoop root@node2:/opt/ #同步到node2节点配置文件
scp -r /opt/hadoop root@node3:/opt/ #同步到node2节点配置文件
# 启动hadoop
---启动 hadoop 之前在 master 上 format 名称节点
-先格式化
cd /mydata/hadoop/hadoop-3.1.4/bin
-出现Storage directory /opt/hadoop/hadoop-3.1.4/tmp/dfs/name has been successfully formatted.
-说明格式化成功
hdfs namenode -format
cd /mydata/hadoop/hadoop-3.1.4/sbin
start-all.sh
---查看 hadoop 服务是否启动成功
-查看master节点
jps
17840 NameNode
24032 Jps
18105 SecondaryNameNode
18350 ResourceManager
-查看node2节点
jps
7762 DataNode
8003 Jps
7883 NodeManager
-查看node3节点
jps
26979 NodeManager
26858 DataNode
27101 Jps
-当 3 台节点分别出现这些 java 进程,则 hadoop 启动成功
# hdfs 常用的命令语句
-列出 hdfs 下的文件
hadoop dfs -ls
-列出 hdfs / 路径下的所有文件,文件夹
hadoop dfs -ls -R /
-创建目录 /input
hadoop dfs -mkdir /input
-列出 hsfs 名为 input 的文件夹中的文件
hadoop dfs -ls input
-将 test.txt 上传到 hdfs 中
hadoop fs -put /home/binguner/Desktop/test.txt /input
-将 hsdf 中的 test.txt 文件保存到本地桌面文件夹
hadoop dfs -get /input/test.txt /home/binguenr/Desktop
-删除 hdfs 上的 test.txt 文件
hadoop dfs -rmr /input/test.txt
-查看 hdfs 下 input 文件夹中的内容
hadoop fs -cat input/*
-进入安全模式
hadoop dfsadmin –safemode enter
-退出安全模式
hadoop dfsadmin -safemode leave
-报告 hdfs 的基本统计情况
hadoop dfsadmin -report
# 运行 wordcount 示例
Wordcount 是 MapReduce 的示例程序,可以统计某个文件中,各个单词出现的次数。
-在 hdfs 文件系统中创建存放被测试文件的目录 input
hadoop fs -mkdir /input
-查看 input 目录是否创建成功
hadoop fs -ls -R /
-创建测试文件 test.txt 并上传到 hdfs 中
vim /opt/test.txt
#添加内容
hello world
hello hadoop
-将 test.txt 上传到 hdfs 中
hadoop fs -put /opt/test.txt /input
# 运行 wordcount 程序
hadoop jar /opt/hadoop/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /input /output
-日志信息出现则运行成功
INFO mapreduce.Job: Job job_1553342123652_0001 completed successfully
-/output/part-r-00000 里就是本次运行的结果
hadoop fs -cat /output/part-r-00000
hadoop 1
hello 2
world 1
# 页面访问
http://IP:50070/ #hdfs文件系统
http://IP:8088/cluster #hadoop 集群
# hadoop能做什么
hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中 的 自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)
# hadoop能为我公司做什么
• 零数据基础,零数据平台,一切起点都是0
• 日志处理
• 用户细分特征建模
• 个性化广告推荐
• 智能仪器推荐
• 一切以增加企业的商业价值为核心目的、最终目的