准备工作
建立hadoop用户组
addgroup hadoop
将root添加到hadoop组
usermod -a -G hadoop root
编辑sudoers
vim /etc/sudoers
hadoop ALL=(ALL:ALL) ALL
修改权限
chown -R root:hadoop /usr/hadoop-2.8.5
配置ssh免密登录(在master上操作,master到所有slave,包括master自己)
生成ssh公钥和私钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
添加公钥到已认证的key中
ssh-copy-id IP地址
java环境配置
上传文件解压至 /usr
修改配置文件: /etc/profiles
添加(最后一行是最大文件打开数的配置):
export JAVA_HOME=/usr/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
ulimit -SHn 65535
保存后刷新:
source /etc/profiles
测试java
java -version
创建目录
mkdir /usr/hadoop-2.8.5/hdfs
cd /usr/hadoop-2.8.5/hdfs
mkdir data name tmp
hadoop配置
修改core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://s24:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop-2.8.5/hdfs/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop-2.8.5/hdfs/name</value>
</property>
<!-- 设置存放DataNode的文件路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop-2.8.5/hdfs/data</value>
</property>
</configuration>
修改hadoop-env.sh
export JAVA_HOME=/usr/jdk1.8
ulimit -SHn 40960
修改hdfs-site.xml
vim hdfs-site.xml
<configuration>
<!-- 设置dfs副本数,不设置默认是3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置secondname的端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s25:50090</value>
</property>
</configuration>
修改slaves
cd /usr/hadoop-2.8.5/etc/hadoop
vim slaves
s24
s25
s45
s46
修改mapred-env.sh
vim mapred-env.sh
export JAVA_HOME=/usr/jdk1.8
ulimit -SHn 40960
修改mapred-site.xml
cd /usr/hadoop-2.8.5/etc/hadoop
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-env.sh
vim yarn-env.sh
export JAVA_HOME=/usr/jdk1.8
ulimit -SHn 40960
修改yarn-site.xml
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s24</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>62000</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>32000</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx6553m</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>48</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>128</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
配置环境变量
vim /etc/profile
末尾追加
export HADOOP_HOME=/usr/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译生效
source /etc/profile
启动集群
格式化namenode
hdfs namenode -format
将已配置好的hadoop整个目录复制到各个节点中,并将各个节点中的目录权限跟主节点中保持一致
启动服务
进入sbin目录启动所有服务
./start-all.sh