一、下载JDK并配置

apt-get install openjdk-8-jdk
#查找软件包
apt-cache search jdk

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin

二、下载HADOOP

#http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common
wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz

三、解压并放入本地目录

tar -xzvf hadoop-2.7.6.tar.gz -C /usr/local
cd /usr/local
mv hadoop-2.7.6 hadoop
cd /usr/local/hadoop/bin
./hadoop version

四、配置环境变量

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop fs -ls /

五、修改配置文件

cd /usr/local/hadoop/etc/hadoop

1、core-site.xml

vi core-site.xml配置主节点,指定namenode的地址

<configuration>
	<property>  
		<name>fs.default.name</name>  
		<value>hdfs://localhost:9000</value>  
	</property>  
</configuration>

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
	<!--用来指定使用hadoop时产生文件的存放目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/usr/hadoop/tmp</value> 
	</property>
 </configuration>
2、hdfs-site.xml

vi hdfs-site.xml指定hdfs保存数据的副本数量,如果dir属性使用相对路径或者不加的话,hadoop在hdfs namenode -format时会报错FATAL namenode.NameNode: Exception in namenode join java.lang.IllegalArgumentException: URI has an authority component

注意,此处的dfs.namenode.name.dirdfs.datanode.data.dir位置需要不一样,不能是一个文件夹,之前设置成一个文件夹报错ERROR org.apache.hadoop.hdfs.server.common.Storage: It appears that another node 1003@iZ2zeh8q22e14pvqr3bu01Z has already locked the storage directory: /usr/hadoop/data/dfs/name原因是当namenode启动后,锁定了文件夹,导致datanode无法启动

<configuration>
	<property>  
		<name>dfs.replication</name>  
		<value>1</value>  
	</property>  
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/hadoop/data/dfs/namenode</value>(即使用完整的绝对地址)
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/hadoop/data/dfs/datanode</value>(即使用完整的绝对地址)
	</property>
</configuration>

#如果配置了hduser的用户的话

<configuration>
	<property>  
		<name>dfs.replication</name>  
		<value>1</value>  
	</property>  
	<!--指定hdfs中namenode的存储位置-->
	<property>  
		<name>dfs.namenode.name.dir</name>  
		<value>file:/home/hduser/mydata/hdfs/namenode</value>  
	</property>  
	<!--指定hdfs中datanode的存储位置-->
	<property>  
		<name>dfs.datanode.data.dir</name>  
		<value>file:/home/hduser/mydata/hdfs/datanode</value>  
	</property>  
</configuration>
3、mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml告诉hadoop以后MR(Map/Reduce)运行在YARN上,如果不指定为YARN,则MR会变为单机版程序,不会进去集群执行。

<configuration>
	<property>  
		<name>mapreduce.framework.name</name>  
		<value>yarn</value>  
	</property>  
</configuration>
4、yarn-site.xml

vi yarn-site.xml

<configuration>
	<!--nomenodeManager获取数据的方式是shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!--指定Yarn的老大(ResourceManager)的地址-->     
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>locahost</value>
	</property> 
	<!--Yarn打印工作日志-->    
	<property>    
		<name>yarn.log-aggregation-enable</name> 
		<value>true</value>    
	</property>
<configuration>

第一次启动hadoop服务之前,必须执行格式化namenode
hdfs namenode -format
cd /usr/local/hadoop/etc/hadoop

5、hadoop-env.sh

vim hadoop-env.sh
修改文件,不修改hadoop-env.sh在启动hadoop时报错
localhost: Error: JAVA_HOME is not set and could not be found.`

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export HADOOP_COMMON_LIB_NATIVE_DIR=/usr/local/hadoop/lib/native/
export HADOOP_OPTS=$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/

六、生成SSH秘钥

此处是为了防止在start-all时频繁输入密码,如果是多机器的话,同理
cd ~/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys

七、启动HADOOP

cd /usr/local/hadoop/sbin
start-all.sh

八、例子

cd ~
mkdir input
cd imput
echo helloworld > file1.txt
echo hellohadoop > file2.txt
echo hellomapreduce > file2.txt

cd /usr/local/hadoop/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /wc_input/* /wc_output

九、常用命令

#在hadoop指定目录内创建新目录
hadoop fs -mkdir /wc_input
#hadoop查看文件列表
hadoop fs -lsr /
#将本地文件file*存储至hadoop
hadoop fs –put file* /wc_input
#打开某个已存在文件
hadoop dfs –cat [file_path]
#将hadoop上某个文件down至本地已有目录下
hadoop fs -get [文件目录] [本地目录]
#删除hadoop上指定文件
hadoop fs –rm [文件地址]
#将hadoop上某个文件重命名
hadoop fs –mv /user/test.txt /user/ok.txt   (将test.txt重命名为ok.txt)
#将hadoop指定目录下所有内容保存为一个文件,同时down至本地
hadoop dfs –getmerge /user /home/t

十、在windows配置hadoop常见报错

问题一:
Error: JAVA_HOME is incorrectly set.
       Please update F:\hadoop\conf\hadoop-env.cmd

解决方案

C:\Program Files\Java\jdk1.8.0_91		修改为		C:\PROGRA~1\Java\jdk1.8.0_91

#PROGRA~1  ===== C:\Program Files 目录的dos文件名模式下的缩写
#长于8个字符的文件名和文件夹名,都被简化成前面6个有效字符,后面~1,有重名的就 ~2,~3,
问题二:
Could not locate Hadoop executable: E:\lib\hadoop-2.8.0\bin\winutils.exe -see https://wiki.apache.org/hadoop/WindowsProblems

解决方案
在https://github.com/steveloughran/winutils 下下载对应hadoop版本win环境运行文件,覆盖bin文件夹

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐