Hadoop安装部署过程
------------
1、配置hosts
------------
#在文件末添加
vim /etc/hosts
...
192.169.1.1 hadoop1
...
192.168.43.128 hadoop1
---------------
2、实现本地免密
---------------
#生成秘钥对(根据提示回车)
ssh-keygen
#将公钥拷贝到免密节点
ssh-copy-id hadoop1
#验证(ssh连接如果没提示输入密码,则免密成功)
ssh hadoop1
如果提示22;则需要安装ssh客户端
apt install openssh-server
如果提示登陆被拒绝,则需要修改配置文件为yes
vim /etc/ssh/sshd_config
重启ssh服务
service ssh restart
-----------------
3、解压相关软件包
-----------------
cd /opt
tar -zxvf jdk1.8.0_111.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz
---------------
4、增加环境变量
---------------
#在文件末尾添加
vim /etc/profile
...
export JAVA_HOME=/opt/jdk1.8.0_111
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#使添加环境变量生效
source /etc/profile
#验证
java -version
hadoop version
-------------
5、配置hadoop
-------------
cd hadoop-2.7.3/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_111
将 slave 的主机名写入到该文件(这里是单节点伪分布式所以只需要加入本机host)
vim slaves
hadoop1
vim core-site.xml
...
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
vim hdfs-site.xml
...
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:50090</value>
</property>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
...
<!-- 指定mr运行在yarn上 -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>
vim yarn-site.xml
...
<configuration>
<property>
<name>yarn.resoursemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-------------
6、启动hadoop
-------------
#注意:
如果以前启动过hadoop,再次格式化,需要将
/usr/local/hadoop/tmp
/usr/local/hadoop/tmp/dfs/name
删除掉,也可以直接删除
/usr/local/hadoop 这个目录,删除命令为:
rm -rf /usr/local/hadoop/
#首次启动需要先在master节点(这里的hadoop1)上执行namenode的格式化操作,成功的话,会看到 "successfully formatted"和"Exitting with status 0"的提示,若为"Exitting with status 1"则是出错。
hdfs namenode -format
#完成 Hadoop 格式化后,在namenode节点上启动Hadoop各个服务,使用jps命令验证相关服务是否运行起来。
start-dfs.sh
jps
**************
58993 NameNode
59601 Jps
59459 SecondaryNameNode
59304 DataNode
**************
start-yarn.sh
jps
**************
58993 NameNode
59649 ResourceManager
59459 SecondaryNameNode
60070 Jps
59767 NodeManager
59304 DataNode
**************
mr-jobhistory-daemon.sh start historyserver
jps
**************
58993 NameNode
59649 ResourceManager
60147 Jps
59459 SecondaryNameNode
59767 NodeManager
59304 DataNode
60108 JobHistoryServer
**************
-------------
7、验证hadoop
-------------
#另外还需要在Master节点(hadoop1)上通过命令
#查看DataNode是否正常启动,如果Live datanode不为0,则说明集群启动成功
HDFS管理界面(NameNode结点) http://hadoop1:50070
(SecondaryNameNode) htpp://hadoop1:50090
MapReduce管理界面 http://hadoop1:8088
/opt/hadoop-2.7.3/logs/mapred-root-historyserver-hadoop3.out
------------------
hadoop平台性能调优
------------------
vim yarn-site.xml
...
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
...
vim mapred-site.xml
...
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx768m</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>–Xmx1536m</value>
</property>
...
-------
8、实例
-------
#查看帮助命令
hdfs dfs -help
#创建一个数据导入文件夹
hdfs dfs -mkdir -p /data/input
-p:可以创建多级目录
#在本地创建两个文本,并加入有规律内容
echo "hello world">test1.txt
echo "hello hadoop">test2.txt
#将文件上传至hdfs上
hdfs dfs -put ./*.txt /data/input
#查看hdfs上的文件
hdfs dfs -ls /data/input/
#运行wordcunt(grep)方法进行计算
hadoop jar /opt/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /data/input/ output
#hadoop jar /opt/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /data/input/ output 'hello'
#查看运行结果
hdfs dfs -cat output/*
#将结果取回本地
hdfs dfs -get output ./output
#删除hdfs上的文件或文件夹
hdfs dfs -rm -r output